当前位置: 首页 > news >正文

SQL Azure 服务器端架构

SQL Azure 服务器端架构

SQL Azure 的订阅模型决定了各个订阅之间的数据是隔离的。实际上,SQL Azure 平台将用户的数据保存在多个SQL Azure 物理服务器上,并且使用SQL Server 的复制功能(Replicas)实现了高可用性的要求。

如图6-2 所示,在SQL Azure 平台,当用户创建了一个数据库之后,SQL Azure 通过复制功能创建三个数据库副本。这三个副本中有一个作为主数据库,所有的数据请求都会首先应用在这个主数据库上,并且同步到另外两个副本数据库中。

主数据库发生故障的时候,SQL Azure 会从另外两个副本中选择一个出来作为主数据库,同时再创建一个新的副本以保证任何时候都有三个副本同时存在,如图6-3 所示。通过基于三个副本的复制功能,SQL Azure 保证了99.9%的高可用性。

 

 

SQL Azure 在服务器端的架构如图6-4 所示。首先从Internet 上发送过来的数据库请求会通过一个基于TDSTabular Data Stream)协议的负载均衡服务器处理。这个负载均衡使用黏滞性算法保证同一个链接的所有请求会被路由到同一台物理服务器。同时由于其基于TDS 协议,保证了只要客户端也使用了TDS 协议,那么这些请求都是可被接受的,比如ADO.NETODBC等,从而保证了SQL Azure 对于开发人员的使用一致性。

数据库访问请求通过负载均衡服务器转发到Gateway 服务器上。Gateway 服务器在这里充当一个代理和转发的角色。首先它完成对请求的认证和授权操作,保证只有合法的请求才能进入下一级操作。同时它还对请求进行防火墙验证,保证请求者的IP 必须是SQL Azure 防火墙中设置允许访问的。最后,Gateway 还有一个内部的访问计数器用来防止DoSDenial of Service)攻击。如图6-4 所示,Gateway 部分由多台服务器组成,在进行操作之后,它会基于连接字符串将TDS请求转发给对应的SQL Azure 物理服务器,也就是用户数据库真正保存的服务器中。

而对于为数众多的数据库服务器,SQL Azure 提供了底层控制模块负责创建、迁移、配置、故障恢复和负载均衡等功能。

 

 

本文节选自《实战Windows Azure:微软云计算平台技术详解 》一书

图书详细信息:

http://www.cnblogs.com/broadview/archive/2011/10/10/2205557.html

相关文章:

  • 计算机经典图书样章免费下载【持续更新中……】
  • Target runtime Apache Tomcat is not defined.错误解决方法
  • 遭遇ASP.NET的Request is not available in this context
  • 【转】Stephen Wolfram写的乔布斯的回忆录
  • Oracle 存储过程和包的使用
  • oracle中int与number的区别
  • Reg“.NET研究”exOptions.Compiled的含义和使用
  • Silver“.NET研究”light 游戏开发小技巧:升级和传送点特效1
  • MPLS 原理
  • Web.config 加密与解密
  • Axis2附件传输
  • MeeGo开发“.NET研究”进程通信核心 DBus调试工具
  • 偶有所感
  • MPLS 原理详解
  • [翻译]WP7 QuickStart-第八篇-屏幕方向
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Angular 响应式表单之下拉框
  • Markdown 语法简单说明
  • nginx 负载服务器优化
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Nodejs和JavaWeb协助开发
  • PAT A1092
  • PHP 小技巧
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 主流的CSS水平和垂直居中技术大全
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • hi-nginx-1.3.4编译安装
  • 进程与线程(三)——进程/线程间通信
  • #DBA杂记1
  • #laravel 通过手动安装依赖PHPExcel#
  • #微信小程序:微信小程序常见的配置传值
  • (待修改)PyG安装步骤
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Core 项目指定SDK版本
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net反混淆脱壳工具de4dot的使用
  • .NET连接数据库方式
  • .NET中使用Redis (二)
  • [Android]使用Git将项目提交到GitHub
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C++]:for循环for(int num : nums)
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [JS]JavaScript 简介
  • [LeetCode][面试算法]逻辑闭环的二分查找代码思路
  • [LeetCode系列]3元素最近和问题的O(n^2)解法