跨AZ数据复制方案中的EC与XOR技术

举报
且听风吟 发表于 2019/11/07 17:44:46 2019/11/07
【摘要】 在云服务中, 为了提高数据的持久性和可用性,通常将数据存储在多个AZ(Availability Zone)之中,每一个AZ拥有独立的供电系统和网络设备,这样,单AZ的故障并不会导致数据的丢失或服务的不可用。 对于云服务而言,如果拥有了跨AZ 的数据同步和业务多活能力,就可以宣称,该服务按年计算可以达到4个9的可用性和11个9的持久性。本文主要介绍跨AZ数据复制方案中所涉及的EC与XOR技术。

跨AZ数据复制

如何将数据同步到多个AZ中,有多种做法,一种比较流行的方案,就是将数据的多个副本放置在不同的AZ中,如下图所示:

640?wxfrom=5&wx_lazy=1&wx_co=1

至于如何实现数据复制,有两种方式:

  1. Master-Slave复制

640?wxfrom=5&wx_lazy=1&wx_co=1

  1. Quorum复制

640?wxfrom=5&wx_lazy=1&wx_co=1

这两种方式均能达成跨AZ的数据同步复制能力以及数据的强一致性语义保障,只是在架构上存在比较大的差异。但无论哪个方案,在网络带宽上,都存在一个比较显著的问题:如果进行全量数据的复制,对带宽的挤占就非常严重,尽管AZ之间会设有专线连接,带宽也很大。因此,如何缩减同步的数据量,减少对网络带宽的挤占,就显得至关重要。另外,如何降低整体的存储空间占用,也是一个非常重要的问题。

常用的方法有如下两种:


  • 压缩数据传输

  • 网络优化中的字节重删技术


但如果碰到图片和视频数据,上面两种方法就基本失效了,这时,需要引入另外两种技术:EC与XOR


EC技术

EC(英文全称为"Erasure Code")本质上是一种编码技术,它在n份原始数据的基础上,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

640?wxfrom=5&wx_lazy=1&wx_co=1

举例:

Data 首先被均分成 {D1,D2,D3,D4},计算出 {C1,C2}两个校验分片。 将6份分片数据存储在不同的地方, 即使任意两个分片数据被损坏了,都可以还原出原始数据Data。 假设共有三个AZ,那么,每一个AZ中只需要存储2个分片的数据即可:

640?wxfrom=5&wx_lazy=1&wx_co=1

这样就可以显著减少跨AZ数据传输降低数据复制对带宽的占用(AZ的出口带宽减少了一半)。

但EC会带来如下问题:

  1. 增加了CPU消耗,用于计算校验分片

  2. 读取时需要从多个AZ中获取数据,时延敏感型业务将会受到明显的影响。

  3. 一个数据分片出现问题时,需要跨AZ读取数据进行修复。

下图简单描述了如何进行数据修复的原理:

640?wxfrom=5&wx_lazy=1&wx_co=1

关于对EC的改进,业界也有一些解决方案, 如LRC码蝴蝶码。EC可以有效减少跨AZ之间的网络带宽占用,对于很多应用场景,它的缺点其实也是完全可以容忍的。

但在真正实现该方案的时候,在架构、组网、安全方面会有很大的挑战。因为每一个AZ都是独立的存在,他们之间除了在大二层网络上互通以外,在四层网络上通常是隔离的,因此需要打通不同AZ的数据存储服务器之间的网络。至于EC的分片如何进行合理放置,也需要设计合理的布局和分配算法。在工程实现上,会有很大的挑战。

XOR技术

XOR的含义,等同于我们所理解的同名位操作符,即,异或操作。

EMC第一次将XOR应用在了"消减"跨AZ间的多副本数据,它的原理分步介绍如下:

Step 1


640?wxfrom=5&wx_lazy=1&wx_co=1

AZ1中的主副本1与AZ2中的主副本2(主副本1与主副本2不相关),在AZ3中分别拥有一个备副本1备副本2

Step 2


640?wxfrom=5&wx_lazy=1&wx_co=1

将AZ3中的备副本1与备副本2进行XOR操作后,得到副本3

Step 3


640?wxfrom=5&wx_lazy=1&wx_co=1

清除备副本1备副本2的数据,仅保留异或后的副本3

故障后恢复数据的方法


640?wxfrom=5&wx_lazy=1&wx_co=1

如果AZ1中的主副本1发生故障,将AZ2中的主副本2与AZ3中的副本3进行XOR操作,即可还原出AZ1中的主副本1

可以看出来,XOR主要用来减少备副本所占用的存储空间,而不是减少网络传输的数据量。对于跨Region间的数据复制,它是非常适用的。

总结


本文简单讨论了跨AZ数据复制方案中的EC与XOR技术,EC技术不仅可以有效减少网络传输数据量,也能够有效降低因为多副本带来的存储空间冗余,而XOR技术则主要为了减少存储空间冗余

精彩文章推荐

《一条数据的HBase之旅》系列连载文章:

简明HBase入门教程-开篇

简明HBase入门教程-Write全流程

简明HBase入门教程-Flush与Compaction

《OpenTSDB技术原理》系列连载文章:

OpenTSDB原理系列-元数据模型

OpenTSDB原理系列-TSDB数据表设计

OpenTSDB原理系列-线程模型

OpenTSDB原理系列-读取流程

其它精彩文章:

从扩线查询能力分析图数据库Titan的设计改进点

从HBase中移除WAL?3D XPoint技术带来的变革

号称十倍性能于Cassandra的ScyllaDB,究竟祭出了哪些技术"利器"?

NewSQL是否是NoSQL的取代者?

阅读开源项目源码的建议姿势


本文转载自微信公众号【Nosql漫谈】。

原文链接:https://mp.weixin.qq.com/s/Zm5UHjDXv3y-WQi86QuUyQ

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。