某中心EBS如何在大规模场景下应对CAP定理挑战
通过优化配置数据的布局,确保在网络分区期间数据的可用性和一致性。
系统架构概述
某中心弹性块存储(EBS)是一个高性能的云基础块存储系统,设计用于与某中心弹性计算云(EC2)协同工作。EC2实例是在云中运行的安全、可调整大小的计算容量分配。EBS允许客户创建高性能存储卷并将其附加到EC2实例上,这些卷的行为类似于个人计算机上的本地硬盘。
Physalia数据存储创新
在分布式微系统架构中,开发了名为Physalia的EBS专用数据存储。Physalia帮助某中心数据中心从通信中断中恢复,对客户影响最小。
每个EC2实例在一个可用区中运行,该可用区是一个或多个具有冗余电源、网络和连接的数据中心。可用区中的EBS卷分布在多个存储服务器上,其架构能够处理网络分区,或EBS服务器与EC2实例之间的通信链路受损。
复制技术与容错设计
EBS通过复制技术在网络分区期间保持可用性。使用容错复制协议将每个数据片段存储在多个服务器上。当发生网络分区时,受影响的服务器会联系称为配置主节点的分布式服务。
主节点存储少量配置数据,指示哪些服务器保存给定卷的数据以及它们复制数据的顺序,这对于识别最新数据非常重要。复制协议使用配置数据决定应用数据应存储的位置,并更新配置以指向应用数据的新位置。Physalia设计用于扮演配置主节点的角色。
一致性vs可用性平衡
数据存储有两个主要可靠性标准:可用性和一致性。可用性意味着对数据库的每个查询都应在合理时间内得到答案。一致性意味着数据库读写结果应反映其发出顺序。
网络理论中的CAP定理指出,在面对分区时,可以解决一致性或可用性,但不能同时解决两者。EBS需要同时解决两者,Physalia通过结合数据中心和电源拓扑知识以及使用单元作为逻辑单元的概念架构,能够提供强大的一致性和可用性统计保证。
单元架构设计
在Physalia中,可用区中的每个EBS卷都有自己的单元,该单元由七个独立服务器上该卷配置数据的七个副本组成。每个配置数据副本称为节点,单个物理服务器通常存储数千个节点。
可用性对某中心客户非常重要,这也是设计和构建方式的一部分。在考虑可用性时,不仅关注使中断变得罕见和短暂,还关注将影响限制在尽可能小的客户子集中。这个概念称为"爆炸半径减小",是Physalia的核心设计原则。
智能数据布局策略
在决定给定节点的放置位置时,Physalia面临两个竞争需求。一方面,节点应该靠近,以最小化在网络分区情况下彼此断开的风险。另一方面,它们不应太靠近或共享电源,因为不希望局部事件(如机架故障)影响整个单元。对网络拓扑和数据中心电源拓扑的了解有助于Physalia实时管理这种权衡。
通过保持单元小型化和本地化,可以确保它们对需要的实例和卷可用。在单元内保持一致性可确保配置数据准确,卷数据不会损坏。
形式化验证
除了经验评估Physalia外,还使用形式化方法验证其正确性。在TLA+规范语言中,定义了Physalia系统的操作参数,并数学验证了即使在极不可能出现的边缘情况下,它也能在网络分区期间减小爆炸半径。
单元的小型化本质上意味着Physalia不是单个数据库,而是数百万个微型数据库的集合。单元级一致性的保证也解释了Physalia的名称来源。葡萄牙战舰(Physalia physalis)看似单个生物,实际上是共同发挥功能的生物集合。