GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

SQL Azure 架构——有竞争力的区别

2010 年 12 月 20 日

两周之前 Kalen Delaney 发布了关于 SQL Azure 内部架构的白皮书,其中的重点在于SQL Azure 是如何达到可伸缩性和高可用性的。 大多数与之竞争的云解决方案都基于托管在虚拟机中的数据库的单一实例。 区分SQL Azure 和它的云数据库竞争对手的基础特性是多客户共享的架构,而它也正是构建在该架构之上的。 白皮书为我们提供了关于SQL Azure 架构的详细说明。

数据库创建

为了使用SQL Azure,我们需要一个Windows Azure 平台账户,然后可以通过SQL Azure 门户创建和管理数据库。 完成对SQL Azure 服务器和主数据库的初始化工作之后,开发者就可以在开发过程中使用Visual Studio 2010 或者SQL Server Management Studio。 当前对数据库的大小限制是50GB,对于企业版本还会再多10GB,而在每台SQL Azure 服务器上,最多可以有149 个数据库。

安全性和主数据库

安全性主要是由微软管理的,但是使用用户ID 和密码仍然可以获得访问权。 Guest 用户无法访问主数据库。 在主数据库中有两种新的角色,dbmanager 和loginmanager。 主数据库还有其它的区别,体现在提供了以下视图: sys.firewall_rules、sys.bandwidth_usage 和sys.database_usage。

所有在SQL Azure 和客户端之间的IP 通信都是经过SSL 加密的,并且用户可能会基于一系列可接受的IP 地址来创建访问控制列表。 它不支持USE 命令,所有客户端连接都会直接与用户的数据库连接。

架构

尽管逻辑数据库对于开发者来说是单独的逻辑单元,但实际上开发者的数据会在三个SQL Server 数据库中建立副本,一个主副本和两个二级副本。 微软对物理架构进行了抽象,并使用了负载均衡和连接路由,从而在访问数据库的时候提供灾难恢复和可伸缩性。

SQL Azure 实现了和 SQL Server 一样的 TDS 接口,这样就为客户端库和应用程序提供了和 SQL Server 一样的访问方式。 此外,网络拓扑提供了四种清晰的层,从而提供了 SQL Server 的逻辑实例:

  • 客户端层——应用程序会使用它来与 SQL Azure 通信
  • 服务层——运行通道(gateway)服务,像连接路由、提供(provisioning )和计费(billing)
  • 平台层——托管在实际 SQL Server 数据库中的结点
  • 基础架构层——物理硬件、网络和操作系统

高可用性

SQL Azure 保证存储账户 99.9% 的正常运行时间,并且能够处理他们接收到的格式正确的请求,从而添加、更新、读取和删除数据。 直到主副本和二级副本都报告成功,并且向磁盘写入了事务日志,它才会认为数据已经成功提交。

所有节点都会由存在于不同物理机架上的六个点监控,而这些点会被视为是相邻的。 当在指定的节点上发生了故障,那么区块管理器(Partition Manager)就会执行重新配置,从而处理这个故障。 区块管理器会以随机的顺序处理故障,并且会一直做下去,直到没有需要处理的故障为止。 想要了解更多详细信息,请直接参看 Kalen 的白皮书。

可伸缩性

对 SQL Azure 达到可伸缩性有帮助的有两种特性,首先是引擎流量调节(engine throttling),其次是负载平衡器(load balancer)。 每个节点都包含有引擎流量调节组件,它会监控节点的健康状况、日志大小、日志写入时间、CPU 使用量以及数据库大小限制。 当超出限制的时候,数据库就会开始拒绝读写,根据微软的建议,开发者必须通过通过异常处理以编程的方式处理这种情况。

负载均衡器使用的是一种即时的方法,它会基于集群中各节点的当前负载来选择主副本和二级副本的位置。 同样,如果节点过载,负载均衡就会从主副本转移到另一个负载较少的节点上。 重要的是要注意到所有的读写都发生在主副本上,所以这会对 SQL Azure 数据库的性能造成很大的影响。

结论

微软期望把它的数据提供服务与云计算竞争对手区分开来,但是现在还只是通过对多客户共享架构提供了与 SQL Server 中类似的功能。 微软暂时也还没有为 SQL Azure 提供大家感兴趣的性能保证。 此外,我们可以从两个不同的角度来看待对多客户共享机制的使用,SQL Azure 想要从软件创建者那里把实现和管理细节抽象出来,从而使其更易于使用。 然而,竞争厂商——像 Oracle、IBM 和 Sybase——可能认为开发者想要得到这个级别的能力和配置,不过他们是通过使用虚拟机来提供的。

查看英文原文: SQL Azure Achitecture - Competitive Differentiation

2010 年 12 月 20 日 07:401426
用户头像

发布了 340 篇内容, 共 112.8 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

ARTS - Week Three

shepherd

开源 互联网 算法

像运营公司一样去做产品

胖鱼2号

创业 产品 产品经理 企业

原创 | TDD工具集:JUnit、AssertJ和Mockito (十九)编写测试-依赖注入\测试接口\重复测试

编程道与术

Java 编程 TDD 单元测试 JUnit

大话设计模式 | 1 简单工厂模式

Puran

C# 设计模式 PlantUML

游戏夜读 | 神话故事和世界观

game1night

如何通过众包应用本地化获得 500 万次下载?

葛仲君

android 翻译 本地化 产品开发 Play商店

ARTS Week2

时之虫

ARTS 打卡计划

硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

小林coding

TCP 网络安全 网络编程 面试题 计算机网络

怎样成为解决问题的高手

落曦

江湖事儿 | 技术人如何做好晋升准备

哈利迪

android 职业成长

JDK 8,该离开的时候,请别留恋!

范学雷

Java 架构 编程语言 Java 25 周年

[kube 022] 混沌测试框架-Litmus

zbyufei

Kubernetes 云原生 混沌工程 Litmus litmuschaos

ARTS week3

丽子

我体验了一把自由职业,比 996 苦多了...

非著名程序员

创业 程序员 自由职业 创业心态

2020年5月北京BGP机房网络质量评测报告

博睿数据

网络 服务器 存储 机房 主机

修改git里commit信息用户名

张张张小烦

Go: Go 调度器的任务窃取(Work-Stealing)

陈思敏捷

go golang 源码分析 原理 队列

ARTS|Week 2 PlantUML 的学习和分享

Puran

LeetCode arts PlantUML

Pycharm社区版安装教程(永久免费,随时升级)

早睡蟒

如何辨别有发展潜力的员工​

Neco.W

工作 招聘

2020年6月5日 继承

瑞克与莫迪

程序员可迁移技能的培养

MavenTalker

程序员 程序员素养 程序员成长

架构师应该具备哪些思维模型?

奈学教育

架构师

彻底搞懂 etcd 系列文章(三):etcd 集群运维部署

aoho

架构 云原生 etcd

彻底搞懂 etcd 系列文章(一):初识 etcd

aoho

架构 云原生 etcd

LeetCode 1339. Maximum Product of Splitted Binary Tree

隔壁小王

算法

一文带你了解 Kafka 原理

cxuan

kafka

日志过滤

HU

真诚的回报

zhoo299

生活 随想

Spring 源码学习 - 单例bean的实例化过程

公众号:好奇心森林

区块链能够防伪?你彷佛有什么误解!

CECBC区块链专委会

CECBC 区块链技术 商品溯源 防伪

DNSPod与开源应用专场

DNSPod与开源应用专场

SQL Azure架构——有竞争力的区别-InfoQ