1.前言 & 摘要
Amazon aurora是针对OLTP、云原生关系型数据库
对于高吞吐量的数据处理,目前的主要矛盾已经转变为网络IO
将redo操作推到了多租户水平拓展存储服务
关键词:quorum model、OLTP、log process
vpc:virtual private cloud,虚拟私有云
使用多阶段同步协议(如 2-parse-commit)解决事务提交的问题在云环境下是困难的
这些协议不能容忍大型分布式系统持续的硬故障和软故障,由于大型分布式系统有很多数据中心,他们也有很高的延时
Amazon aurora借助跨分布式云环境的redo log解决上述问题
2.持久性
quorum model,分段存储,segmented storage
2.1复制和相关故障
AZ(available zone)是一个可用区,AZ之间是隔离的(包括:电源、网络、软件部署等),同一AZ内延迟低,许多AZ组成AZs(AZ集群),许多数据备份分散在各个AZ中,保证大规模故障只影响一个数据备份
使用基于quorum的投票协议来容忍故障
quorum协议简介:
如果V份备份数据都有投票权,读取、写入必须各自得到Vr和Vw票,为了达到一致性,必须遵循两个规则:
- Vr+Vw > V
- Vw > V/2
保证读取的节点数和写的节点有交集,并且包含了最新版本的数据
为什么认为2/3quorum模型不可靠?
如果有大规模火灾、洪水,摧毁了两个AZ,那么我们就丢失了两份副本,并且无法确定第三份数据是否最新
在Aurora,我们的设计模式是(i)可以丢失一整个可用区AZ,外加一个附加节点,而不会丢失数据;(ii)或丢失一整个可用区AZ,还可以继续写入数据
解决措施:每份数据复制6次,放到三个可用区AZ中,每个AZ放两个备份,即
- V=6
- 写入 Vw=4
- 读取 Vr=3
这样(i)和(ii)都能满足
(i)AZ+1 node = 3节点失效,还有3个可用,由于写入4个节点,剩下3个节点一定有一个包含最新数据,也没有丢失数据
(ii)丢掉一整个AZ,还剩4个节点可用,可用满足Vw=4,可用继续写入