SQL Azure是一个具有高扩展性和高可用性的云端数据库服务。和其他的Windows Azure服务一样,SQL Azure也运行在微软遍布全球的数据中心。数据中心的基础架构为SQL Azure服务提供了网络负载平衡、故障转移和备份的能力。如下图所示显示了SQL Azure的体系架构。
SQL Azure的体系架构(图片来源于网络)
SQL Azure服务由4个层次组成:基础设施层、平台层、服务层和客户端层。除了客户端以外,其他3层都运行在微软的数据中心。
1. 基础设施层
基础设施层为上层的应用提供了硬件和操作系统的管理接口。它跨越了数据中心的许多服务。
2. 平台层
平台层由SQL Server服务器实例、SQL Azure fabric控制器和其他管理服务组成。SQL Server数据库实例代表了客户部署的数据和数据备份,以及底层的操作系统实例。SQL Azure fabric用于完成数据库的自动部署、备份、故障转移和设置负载均衡。SQL Azure fabric负责为用户的数据创建3个备份,并且基于这些备份提供自动的故障转移能力。
如果用户的主数据库实例出现故障,SQL Azure fabric将会从可用的3个备份中选择一个作为新的主数据库实例,并将所有通信信息发往新的主数据库。之后,SQL Azure fabric会创建新的备份数据库实例,以维持3次备份的原则。管理服务负责系统的补丁、升级、一致性,并且负责对底层硬件系统进行配置。
3. 服务层
服务层直接接入外网的设备组中,作为平台层接入外部网络的网关。它向最终用户提供TDS(Tabular DATA Stream)协议的访问端口,用户通过该协议访问SQL Azure内部的数据。这和过去SQL Azure的操作是一样的。服务层同时还提供了流量计费及用户账户的配置服务。
注意:客户端程序通过TDS (Tabular DATA Stream)协议访问微软SQL-Server服务器中的数据库。
服务层暴露了TDS协议的接口,使用了基于SSL的1433端口。服务层负责将客户的TDS连接路由到平台层的用户数据库实例上。服务层保留了主数据库及其备份数据库的信息。在用户创建数据库时,服务层还负责为用户初始化一个新的数据库。在初始化数据库阶段,服务层也会与SQL Azure fabric协作完成对备份数据库的初始化工作。
流量与计费服务负责监控用户数据库的使用情况,并根据使用情况进行计费。计费是在一个账户级别下完成的。
4. 客户端层
客户端层并没有包含SQL Azure的特定组件,相反用户可以使用现在的SQL Server客户端组件访问SQL Azure,比如ADO.NET、ODBC、Visual Studio、SQL Server Management Studio、ADO.NET Data Server数据服务等。客户端API通过1433端口初始化一个TDS连接到SQL Azure,服务层将该连接路由到正确的数据库实例。