细说 Azure Storage 的冗余策略
当我们想要把应用搬到云端的时候,首先要关注的便是数据的安全性。当然所有的云服务厂商都会对用户数据承诺一个非常高的安全性,但万一出现意外呢?我们是不是还要有适当的应对方案?比如今年的3月8日晚间,Azure 某个区域中的存储几乎全部不能访问,持续达两个多小时。当时最担心的是:用户的数据万一丢掉怎么办?同时,我们是不是可以根据云服务提供的数据服务的特点来优化程序的性能呢?基于如此种种的原因,我们需要了解云端数据服务的一些特性的详情,这将对我们很有帮助。本文将和大家一起探讨 Azure Storage 的冗余策略。
理解 Azure Storage 冗余策略的好处
微软针对不同的应用场景提供了不同的存储冗余策略。比如对可靠性要求很高的数据可以选择多个异地的备份,而对访问速度要求高的数据则可以使用高速的存储设备。当然,不同的方案成本也是不一样的。我们可以针对应用的特点使用不同的存储策略,这样可以节省成本。还可以指定对应的容灾备份以及灾难恢复方案。
Azure Storage Account
需要注意的是,Azure Storage 存储的冗余策略是绑定在 Azure Storage Account 上的。Azure Storage 当前一共有四种数据的冗余策略,分别是:
Locally Redundant Storage(LRS)
Zone Redundant Storage(ZRS)
Geo Redundant Storage(GRS)
Read-access Geo Redundant Storage(RA-GRS)
当我们创建 Storage Account 的时候就需要指定其对应的存储的相关类型和策略:

Performance 选项目前有两种选择,分别是 "Standard" 和 "Premium"。准确的说,下面的 Replication 选项才是 Storage Account 的冗余策略。可是,冗余策略和性能选项是有关联性的。比如,当 performance 为 "Standard" 时,Replication 可以选择 ZRS, LRS, GRS, RA-GRS:

而 performance 为 "Premium" 时,Replication 则只能选择 LRS:

下面我们将详细的介绍这四种冗余策略及常见用例。
Locally Redundant Storage
本地冗余存储(LRS),在单个数据中心里有多个同步的数据拷贝。数据在弹性存储单元中被复制三次,该弹性存储单元托管在创建存储帐户的区域中的数据中心内。 仅在写入所有三个副本后,才成功返回写入请求。 这三个副本驻留在同一弹性存储单元中的不同容错域和升级域中。
弹性存储单元是存储节点的机架的集合。 容错域 (FD) 是一组代表出错的物理单元的节点,可将其视为属于同一物理机架的节点。 升级域 (UD) 是一组在服务升级(推出)过程中一起升级的节点。 三个副本将分布在同一弹性存储单元中的 UD 和 FD 上,以确保即使在硬件故障影响单个机架时,或在推出期间升级节点时,数据也可用。
当看到这里时,相信你已经感受到了,即便是 Azure Storage 中最基础的 LRS 数据冗余策略也远高于我们自己维护的系统了!
LRS 的优点是成本最低,这里说的低是和其它类型的冗余策略相比。并且可以提高访问的性能,比如选择performance 为 “Premium” 时只能使用 LRS 策略。
但是它的缺点也很明显,就是无法应对整个数据中心都 crash 的情况(火灾、洪灾、地震、技术故障等)。
Zone Redundant Storage
区域冗余存储(ZRS),除了存储类似于 LRS 的三个副本外,还在一个或两个区域内的数据中心之间异步复制数据,从而提供比 LRS 更高的安全性。 在这种情况下,即使主数据中心不可用或不可恢复,存储在 ZRS 中的数据也安全的。
需要注意的是,ZRS 仅能应用于 blob 类型的存储。
Geo Redundant Storage
异地冗余存储(GRS),将数据复制到距主区域数百英里以外的辅助区域。如果 Storage Account 启用了 GRS,即使在遇到区域完全停电或导致主要区域不可恢复的灾难时,用户的数据也是安全的。
对于启用了 GRS 的 Storage Account,更新将首先提交到主要区域,并在其中复制三份。
然后,更新将异步复制到次要区域(也是在其中复制三份)。
使用 GRS 时,主要和次要区域在一个弹性存储单元内管理跨单独容错域和升级域的副本。
GRS 是一种性价比很高的选择,对数据安全要求较高的用户可以选择这种冗余策略。比如我们在一个 web 应用中保存了用户上传的数据(文档、图片、视频等)。为了保护用户的数据,我们可以把这些文件存放在设置为 GRS 的存储中。当主区域发生问题时,至少可以把用户的数据恢复回来。下面是笔者维护的一个使用了 GRS 的项目:

次区域是系统自动设置的,不支持用户自由选择。其实我们都没有必要知道它的存在,只需要知道数据是安全的就可以了。
Read-access Geo Redundant Storage
除了 GRS 所提供的在两个区域之间进行复制外,读取访问异地冗余存储 (RA-GRS) 还提供对辅助位置中的数据的只读访问权限,从而最大限度地提高了 Storage Account 的可用性。
当设置为 RA-GRS 时,除了 Storage Account 的主终结点外,还可以通过访问辅助终结点获取数据。辅助终结点与主终结点类似,但会在帐户名称后面追加后缀 –secondary。例如,如果 Blob 服务的主终结点是 myaccount.blob.core.windows.net,辅助终结点则是 myaccount-secondary.blob.core.windows.net。 Storage Account 的访问密钥对于主终结点和辅助终结点是相同的。
对于 RA-GRS, 看起来可能很高大上,但是我们却很难把这种能力加以应用。按照 Azure文档所说,这种策略主要的目的是高可用性。但是用户又不能自由的指定次区域的位置,所以十分怀疑是否可以达到真正的目的。
总结
数据的安全永远都是相对的,片面的追求数据安全肯定会为我们带来不可承受的成本压力。我们能做的就是针对不同类型的数据,寻找价格上可以接受的冗余方案。而 Azure Storage 提供的丰富选项,则给我们的选择带来了很大的灵活性。
细说 Azure Storage 的冗余策略的更多相关文章
- Azure Storage Client Library 重试策略建议
有关如何配置 Azure Storage Library 重试策略的信息,可参阅 Gaurav Mantri 撰写的一篇不错的文章<SCL 2.0 – 实施重试策略>.但很难找到关于使用何 ...
- Windows Azure Storage (17) Azure Storage读取访问地域冗余(Read Access – Geo Redundant Storage, RA-GRS)
<Windows Azure Platform 系列文章目录> 细心的用户会发现,微软在国外和国内的数据中心建设都是成对的,比如香港数据中心(Asia East)和新加坡的数据中心(Sou ...
- Windows Azure 存储的冗余存储选项和只读访问跨地域冗余存储
我们很高兴地宣布,现在我们使客户可以获得对数据更高的读取可用性.该预览功能称为"只读访问- 跨地域冗余存储(RA-GRS)",使客户可以在存储帐户主要区域无法读取数据时,通过跨 ...
- Windows Azure Storage (18) 使用HTML5 Portal的Azure CDN服务
<Windows Azure Platform 系列文章目录> Update:2015-04-15 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的文档:Azu ...
- Windows Azure Storage 之 Retry Policy (用来处理短暂性错误-Transient Fault)
在使用Windows Azure Storage Service 的时候, 通常会遇到各种各样的问题. 例如网络连接不稳定,导致请求没有发出去.删除一个Blob Container 之后又立刻创建同名 ...
- 直传文件到Azure Storage的Blob服务中
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:为了庆祝获得微信公众号赞赏功能,忙里抽闲分享一下最近工作的一点心得:如何直接从浏览器中上传文件到Azure ...
- Azure系列2.1 —— com.microsoft.azure.storage.blob
网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习心得做下笔记,文中不正确地方请大家指正. Azure Blob ...
- Azure Storage 系列(一)入门简介
一,引言 今天作为新的Azure 资源介绍的开篇,我们来学习一个新的服务,Azure Storage.众所周知,我们实际在开发过程中,会需要存储一些比如说日志,图片,等等,各种类型的数据.比如说存储图 ...
- Azure Queue Storage 基本用法 -- Azure Storage 之 Queue
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...
随机推荐
- 为何你跟着滴滴D8级前端大神撸代码,技术却依旧原地踏步?
引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D ...
- tar+pigz+ssh实现大数据压缩传输
磁盘读取---->打包---->压缩------>传输---->解压缩-->拆包---->落盘 |->tar |->gzip |-&g ...
- (转)认识java中的堆和栈
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...
- kafka生产实践
最近接触到一个APP流量分析的项目,类似于友盟.涉及到几个C端高并发的接口,这几个接口主要用于C端数据的提交.在没有任何缓冲的情况下,一个接口涉及到5张表的提交.压测的结果很不理想,主要瓶颈就在与RD ...
- 数据结构随笔-php实现栈
栈(Stack)满足后进先出(LIFO)的原则: 下面利用php实现栈的相关操作: 本实例栈的基本操作: 入栈(push):向栈内压入一个元素,栈顶指针指向栈顶元素 出栈(pop): 从栈顶去除元素, ...
- OpenCV 之 Mat 类
以前看 OpenCV 的书,或者资料也好,遇到 Mat 类的介绍,一般都是匆匆带过,自以为已经很熟悉了,从来没有深入研究过. 结果前段时间面试了一家公司,被问到两个 Mat 的问题:一是,谈谈对 Ma ...
- ARP与RARP协议及arp脚本
1.什么是ARP与RARP协议 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议. 在⽹络通讯时,源主机的应⽤程序知道 ...
- css小随笔
一.什么是CSS W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化.其倡导中第一条的"表现"指的便可以说是CSS.CSS全称Cascadi ...
- 66. Plus One【leetcode】
Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. Yo ...
- jmeter - 定时器
jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,最新的3.0版本jemter提供了9种定时器(之前6种),下面一一介绍: 一.定时器的作 ...