Windows Azure数据存储与比较
对于绝大多数解决方案而言,数据都是至关重要的一部分,云计算中同样如此。在云计算里面,绝大多数传统存储的建议都可以直接拿来用,如数据冗余、数据加密等。但是云计算中的数据与传统的数据有所不同,主要体现在三个方面。
(1)数据可能存储在本地,也可能存储在云端
对于存储在本地的数据,如果云端服务需要连接,则可以通过建立不同的渠道来实现数据访问或者同步,如图所示Windows Azure中的数据同步技术。
- „ 网络与网络互联:IaaS中的Virtual Network实现本地网络和云端网络的无缝整合,云端数据和本地数据都将成为局域网内部的数据,通过传统的局域网通信方式即可实现数据访问和管理。
- „ 计算机间互联:IaaS中的Point-to-Site实现单台计算机与云端计算机的安全连接,支持基于IPv4的通信。
- „ 应用程序互联:Service Bus实现应用程序间的互联,数据可以通过Service Bus暴露或传递于不同平台上的应用程序之间。
- „ 数据同步:基于互联网和软件产品本身的数据同步,如SQL Server和SQL Azure的同步、本地Active Directory和云端Windows Azure Active Directory的同步。
(2)数据访问主要依赖于Internet,但数据访问和安全性要求极高
访问云端的数据或者通过建立云端连接来共享数据均需要保证数据安全性,Microsoft Azure中的数据服务大多数支持SSL通信加密,且提供多种不同安全级别的验证支持,对于SQL Azure和托管服务,开发者都可以自定义访问IP的“白名单”,实现更高级别的安全性保障。归纳起来,Microsoft Azure中的数据服务主要基于以下几个特性来实现数据安全:
- „ SSL加密通信。
- „ 使用用户名、密钥管理数据。
- „ 使用SAS签名授权方式控制访问权限。
- „ 基于ACS或者WAAD的登录授权。
- „ IP白名单、黑名单。
- 证书加密数据访问密钥等关键信息
(3)数据访问客户端运行于世界各地,访问速度很重要
云计算的数据可以存放在许多地方,而且WindowsAzure数据存储也是非常多样化的。为了实现高性能的数据服务,开发者可以选用最佳的数据存储/缓存来实践解决方案,同时对于公开的云端静态数据(如文件、视频等),选用较近的数据中心,并开启CDN加快访问速度。
选择正确的数据类型时,应充分考虑项目需求和数据上下游的交互压力,除了常用的文件存储和缓存技术之外,对于队列存储和表存储,开发者应仔细分析Queue Storage和Service Bus Queue、Table Storage和SQL Azure的对比,选择最佳的数据类型来实践。
如下表所示是Queue Storage和Service Bus Queue的对比。
服务特性 |
Queue Storage |
Service Bus Queue |
先进先出 |
不保证 |
保证 |
数据传输 |
至少传输一次 |
至少传输一次,至多传输一次 |
队列大小 |
最大可至200TB |
最大不超过5GB |
访问方法 |
读取 --> 独享 --> 删除 |
锁定 --> 读取 --> 删除 |
锁定时长 |
(lease)默认30s,最多为7天 |
(lock)默认60s,RenewLock API支持不断更新 |
锁定粒度 |
消息 |
整个队列 |
批量读取 |
支持,单次最多读取32条消息 |
支持,pre-fetch属性实现批量读取 |
批量写入 |
不支持 |
支持 |
读写效率 |
最优2000条消息/秒,平均延时10ms |
最优2000条消息/秒,平均延时100ms |
存储成本 |
经济 |
一般 |
如下表所示是Table Storage和SQL Azure的对比。
服务特性 |
Table Storage |
SQL Azure |
关系型数据存储引擎 |
不是 |
是 |
服务端处理 |
不支持 |
支持存储过程、联合、触发器等 |
批量读取 |
同一个索引区支持 |
全库支持 |
数据表结构 |
动态定义 |
固定定义 |
数据形式 |
固定有限量数据类型 |
多种数据类型,且支持自定义类型 |
存储成本 |
经济 |
一般 |
结合上述数据特性和前面讨论的Microsoft Azure开发技术,对于常用的数据共享和数据服务,作以下分析和对比(如下表)
数据形式 |
数据使用方 |
解决方案 |
数据公开(互联网访问) |
备注性能 |
数据通信 |
云端服务、本地服务、跨平台服务等 |
Service Bus Queue、Service Bus Topic |
公开 |
实时传输,先进先出 |
数据通信 |
云端服务、本地服务、跨平台服务等 |
队列存储(Queue Storage) |
公开 |
高并发、不保证先进先出 |
数据通信 |
云端服务、本地服务、跨平台服务等 |
托管式缓存(Managed Cache Service) |
公开 |
数据缓存 |
数据通信 |
托管服务 |
In-Role Cache |
不公开 |
托管服务内部使用 |
数据形式 |
数据使用方 |
解决方案 |
数据公开(互联网访问) |
备注性能 |
数据通信 |
托管服务 |
Internal Endpoint、WCF服务 |
不公开 |
托管服务内部通信 |
数据通信 |
虚拟网络 |
虚拟网络、局域网通信 |
不公开 |
虚拟网络内部的托管服务、虚拟机、本地网络间的局域网通信 |
数据存储 |
云端服务、本地服务、跨平台服务等 |
Blob Storage |
公开 |
文件存储 |
数据存储 |
托管服务、IaaS虚拟机 |
Blob Storage (页式) |
不公开 |
托管服务虚拟机或者IaaS虚拟机加载成本地磁盘 |
数据存储 |
云端服务、本地服务、跨平台服务等 |
Table Storage |
公开 |
非关系型数据存储、非固定数据结构类型的数据存储 |
数据存储 |
云端服务、本地服务、跨平台服务等 |
SQL Azure |
公开 |
云端关系型数据库引擎 |
数据访问 |
云端服务、本地服务、跨平台服务等 |
账户名+密钥 |
公开 |
应用于WAS存储、SQL Azure存储、Managed Cache |
数据访问 |
托管服务 |
指定Cache Role名称 |
不公开 |
In-Role Cache |
数据访问 |
云端服务、本地服务、跨平台服务等 |
签名授权访问(Shared Access Signature) |
公开 |
应用于WAS存储、Service Bus消息 |
数据访问 |
云端服务、本地服务、跨平台服务等 |
直接访问 |
公开 |
应用于CDN,设定为Public的WAS存储内容 |
数据访问 |
云端服务、本地服务、跨平台服务等 |
ACS、WAAD |
公开 |
集成ACS、WAAD实现项目中的登录验证 |
数据可用性 |
托管服务 |
多个实例、Auto-Scaling |
公开 |
负载均衡器实现高可用性 |
数据可用性 |
IaaS虚拟机服务 |
多台虚拟机、Load Balanced Endpoint |
公开 |
负载均衡 |
数据可用性 |
云端服务、本地服务、跨平台服务等 |
CDN(数据传输网络) |
公开 |
缓存静态文件 |
数据可用性 |
托管服务 |
Traffic Manager |
公开 |
实现多个托管服务的对外统一服务 |
数据可靠性 |
托管服务 |
多个实例、Upgrade Domain |
公共 |
提高托管服务可靠性 |
数据可靠性 |
IaaS虚拟机服务 |
Availability Set |
公共 |
提高虚拟机服务对外可靠性 |
数据可靠性 |
WAS存储、SQL Azure存储、WAAD等 |
异域备份、数据同步、虚拟网络 |
不公开 |
实现数据备份、数据同步 |
数据形式 |
数据使用方 |
解决方案 |
数据公开(互联网访问) |
备注性能 |
数据通信 |
托管服务 |
Internal Endpoint、WCF服务 |
不公开 |
托管服务内部通信 |
数据通信 |
虚拟网络 |
虚拟网络、局域网通信 |
不公开 |
虚拟网络内部的托管服务、虚拟机、本地网络间的局域网通信 |
数据存储 |
云端服务、本地服务、跨平台服务等 |
Blob Storage |
公开 |
文件存储 |
数据存储 |
托管服务、IaaS虚拟机 |
Blob Storage (页式) |
不公开 |
托管服务虚拟机或者IaaS虚拟机加载成本地磁盘 |
数据存储 |
云端服务、本地服务、跨平台服务等 |
Table Storage |
公开 |
非关系型数据存储、非固定数据结构类型的数据存储 |
数据存储 |
云端服务、本地服务、跨平台服务等 |
SQL Azure |
公开 |
云端关系型数据库引擎 |
数据访问 |
云端服务、本地服务、跨平台服务等 |
账户名+密钥 |
公开 |
应用于WAS存储、SQL Azure存储、Managed Cache |
数据访问 |
托管服务 |
指定Cache Role名称 |
不公开 |
In-Role Cache |
数据访问 |
云端服务、本地服务、跨平台服务等 |
签名授权访问(Shared Access Signature) |
公开 |
应用于WAS存储、Service Bus消息 |
数据访问 |
云端服务、本地服务、跨平台服务等 |
直接访问 |
公开 |
应用于CDN,设定为Public的WAS存储内容 |
数据访问 |
云端服务、本地服务、跨平台服务等 |
ACS、WAAD |
公开 |
集成ACS、WAAD实现项目中的登录验证 |
数据可用性 |
托管服务 |
多个实例、Auto-Scaling |
公开 |
负载均衡器实现高可用性 |
数据可用性 |
IaaS虚拟机服务 |
多台虚拟机、Load Balanced Endpoint |
公开 |
负载均衡 |
数据可用性 |
云端服务、本地服务、跨平台服务等 |
CDN(数据传输网络) |
公开 |
缓存静态文件 |
数据可用性 |
托管服务 |
Traffic Manager |
公开 |
实现多个托管服务的对外统一服务 |
数据可靠性 |
托管服务 |
多个实例、Upgrade Domain |
公共 |
提高托管服务可靠性 |
数据可靠性 |
IaaS虚拟机服务 |
Availability Set |
公共 |
提高虚拟机服务对外可靠性 |
数据可靠性 |
WAS存储、SQL Azure存储、WAAD等 |
异域备份、数据同步、虚拟网络 |
不公开 |
实现数据备份、数据同步 |