当我们想要把应用搬到云端的时候,首先要关注的便是数据的安全性。当然所有的云服务厂商都会对用户数据承诺一个非常高的安全性,但万一出现意外呢?我们是不是还要有适当的应对方案?比如今年的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 的冗余策略的更多相关文章

  1. Azure Storage Client Library 重试策略建议

    有关如何配置 Azure Storage Library 重试策略的信息,可参阅 Gaurav Mantri 撰写的一篇不错的文章<SCL 2.0 – 实施重试策略>.但很难找到关于使用何 ...

  2. Windows Azure Storage (17) Azure Storage读取访问地域冗余(Read Access – Geo Redundant Storage, RA-GRS)

    <Windows Azure Platform 系列文章目录> 细心的用户会发现,微软在国外和国内的数据中心建设都是成对的,比如香港数据中心(Asia East)和新加坡的数据中心(Sou ...

  3. Windows Azure 存储的冗余存储选项和只读访问跨地域冗余存储

    我们很高兴地宣布,现在我们使客户可以获得对数据更高的读取可用性.该预览功能称为"只读访问- 跨地域冗余存储(RA-GRS)",使客户可以在存储帐户主要区域无法读取数据时,通过跨 ...

  4. Windows Azure Storage (18) 使用HTML5 Portal的Azure CDN服务

    <Windows Azure Platform 系列文章目录> Update:2015-04-15 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的文档:Azu ...

  5. Windows Azure Storage 之 Retry Policy (用来处理短暂性错误-Transient Fault)

    在使用Windows Azure Storage Service 的时候, 通常会遇到各种各样的问题. 例如网络连接不稳定,导致请求没有发出去.删除一个Blob Container 之后又立刻创建同名 ...

  6. 直传文件到Azure Storage的Blob服务中

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:为了庆祝获得微信公众号赞赏功能,忙里抽闲分享一下最近工作的一点心得:如何直接从浏览器中上传文件到Azure ...

  7. Azure系列2.1 —— com.microsoft.azure.storage.blob

    网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习心得做下笔记,文中不正确地方请大家指正. Azure Blob ...

  8. Azure Storage 系列(一)入门简介

    一,引言 今天作为新的Azure 资源介绍的开篇,我们来学习一个新的服务,Azure Storage.众所周知,我们实际在开发过程中,会需要存储一些比如说日志,图片,等等,各种类型的数据.比如说存储图 ...

  9. Azure Queue Storage 基本用法 -- Azure Storage 之 Queue

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...

随机推荐

  1. Html的基本元素(Element)

    本人写这篇文章是我在IT修真园里学习了一段时间,反过来复习时整理的.虽然只是些基础知识内容,希望能帮到大家. 首先我们要了解所谓的html它的定义是什么? [html:超文本标记语言,文本:txt格式 ...

  2. tensorflow l2_loss函数

    1.l2_loss函数 tf.nn.l2_loss(t, name=None) 解释:这个函数的作用是利用 L2 范数来计算张量的误差值,但是没有开方并且只取 L2 范数的值的一半,具体如下: out ...

  3. innodb关键特性之double write

    # 脏页刷盘的风险 两次写的原理机制 1.解决问题 2.使用场景 3.doublewrite的工作流程 4.崩溃恢复 # doublewrite的副作用 1.监控doublewrite负载 2.关闭d ...

  4. 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  5. 微信小程序开发-新闻列表之新闻列表绑定

    微信小程序开发-新闻列表之新闻列表绑定开发教程: 1.效果图预览 2.准备工作 在拿到效果图后不要先急着去写代码,而是要去分析一下页面的整体结构,用什么方式定位和布局.小程序里建议使用flex布局,因 ...

  6. Vivado完成综合_实现_生成比特流后发出提醒声音-原创☺

    之前做技术支持时,有过客户吐槽Vivado运行时间长,又不能在完成工作后发送提醒,这两天又有人提起,所以决定写篇帖子. 大家知道,Vivado的技术文档总提及tcl,不过似乎很不招人待见,很少有人研究 ...

  7. Nlpir Parser灵玖文本语义挖掘系统数据采集

    在计算机广泛应用的今天,数据采集的重要性是十分显著的.它是计算机与外部物理世界连接的桥梁.各种类型信号采集的难易程度差别很大. 灵玖软件Nlpir Parser文本语义挖掘系统以分词技术为基础,集成了 ...

  8. Android异步处理技术

    前言: 在移动端开发中,我们必须正确处理好主线程和子线程之间的关系,耗时操作必须在子线程中完成,避免阻塞主线程,导致ANR.异步处理技术是提高引用性能,解决主线程和子线程之间通信问题的关键. 通常在如 ...

  9. 引水入城[NOI2010 ]

    题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N行M列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度. 为了 ...

  10. ios 监听TextField中内容

    @property (weak, nonatomic) IBOutlet UITextField *UserID; @property (weak, nonatomic) IBOutlet UITex ...