某中心EBS如何大规模应对CAP定理挑战
通过优化配置数据的布局,确保其在“网络分区”期间保持可用性和一致性。
会议
NSDI 2020
相关出版物
《数百万个微型数据库》
某中心弹性块存储(EBS)是一种高性能云块存储系统,设计用于与某中心弹性计算云(EC2)协同工作。EC2实例是在云中运行的安全、可调整的计算容量分配单元。EBS允许客户创建高性能存储卷并将其挂载到EC2实例,这些卷的行为类似于本地硬盘。
正如某中心构建直接面向客户的新服务(如混合云解决方案和自研芯片实例),我们持续投资于服务架构中的分布式微系统。在USENIX网络系统设计与实现研讨会(NSDI ‘20)上发表的论文中,我们描述了一种专为EBS设计的数据存储系统Physalia,它帮助某中心数据中心从通信中断中恢复,并将客户影响降至最低。
Physalia是EBS持续创新的成果之一,EBS为某中心客户提供块存储服务已超过10年。
每个EC2实例在一个可用区运行,可用区包含一个或多个具备冗余电源、网络和连接的数据中心。可用区内的EBS卷分布在多个存储服务器上,其架构可处理网络分区或EBS服务器与EC2实例之间的通信链路故障(例如数据中心间光缆损坏)。
EBS通过复制技术在分区期间保持可用性。EBS使用容错复制协议将每份数据存储在多个服务器上。当网络分区发生时,受影响的服务器会联系一个称为配置主节点的分布式服务。
主节点存储少量配置数据,指示哪些服务器持有特定卷的数据及其复制顺序,这对识别最新数据至关重要。复制协议使用配置数据决定应用数据的存储位置,并更新配置以指向应用数据的新位置。Physalia被设计为扮演配置主节点的角色。
数据存储有两个主要可靠性标准:可用性和一致性。可用性意味着对数据库的每次查询都应在合理时间内返回结果;一致性意味着数据库读写结果应反映操作发起顺序。如果用户A向某位置写入数据,用户B随后从同一位置检索数据,B应检索到A写入的内容。
规避CAP定理
网络理论中的CAP定理指出,在面对分区(CAP中的P)时,可以实现一致性或可用性,但无法同时实现两者。EBS需要同时满足两者,而Physalia通过结合数据中心和电源拓扑知识以及以细胞为逻辑单元的架构,能够提供强统计保证的一致性和可用性。
在Physalia中,可用区内的每个EBS卷拥有自己的细胞,该细胞由七个独立服务器上该卷的七份配置数据副本组成。每份配置数据副本称为一个节点,单个物理服务器通常存储数千个节点。
一个Physalia细胞,由七个节点(N)组成,每个节点可相互通信。
可用性对某中心客户至关重要,也是我们设计和构建的核心原则。在考虑可用性时,我们不仅关注减少中断频率和时长,还致力于将影响限制在尽可能小的客户子集中。这一理念称为“爆炸半径缩小”,是Physalia的核心设计原则。Physalia通过在需要时将配置数据就近放置在所需服务器旁来缩小爆炸半径。
在决定节点位置时,Physalia面临两个竞争需求:一方面,节点应彼此靠近以最小化网络分区时彼此隔离的风险;另一方面,节点不应过于靠近或共享电源,以避免机架故障等局部事件影响整个细胞。我们对网络拓扑和数据中心电源拓扑的实时了解帮助Physalia管理这一权衡。
通过保持细胞小型化和本地化,可确保它们对需要它们的实例和卷可用。在细胞内保持一致性可确保配置数据准确,卷数据不被破坏。
细胞的小型化意味着Physalia实质上不是单个数据库,而是数百万个微型数据库的集合,这也是我们论文的标题《数百万个微型数据库》。细胞级一致性的保证也解释了Physalia的名称:葡萄牙战舰水母(Physalia physalis)看似单一生物,实则是多个生物共生协作的集合体。
除了实证评估Physalia,我们还使用形式化方法验证其正确性。形式化方法是某中心研究人员设计、测试和验证各规模系统的强大工具。在规范语言TLA+中,我们定义了Physalia系统的操作参数,并数学验证了其在网络分区期间能缩小爆炸半径,即使在极不可能出现的边缘案例中也是如此。
研究领域
云与系统
标签
NSDI、数据库管理、数据库分区、形式化验证
关于作者
Marc Brooker是某中心实用计算服务部门的高级首席工程师。