知识卡片
对等结构与Meta/Data分离结构的取舍:Bada为何选择对等设计
内容
分布式存储系统在节点角色划分上主要有两条路线:一条以BigTable为代表(包括HBase、百度Mola),设置专门的MetaServer存储元数据、DataServer存储实际数据,角色分工明确;另一条以Amazon Dynamo为代表(包括Cassandra、Riak),采用对等结构,每个节点地位相同,既存元信息也存数据,不存在专门的元数据角色。Bada选择了后者,核心理由有两点:一是部署和运维的简便性——一旦引入独立的Meta节点,部署时就必须把Meta节点和Data节点分开管理,增加了运维复杂度,而对等结构不需要区分部署角色,能整体扩缩容;二是对”加一层能解决大部分问题”这个计算机行业常见思路的反向审视——多加一层(专门的Meta层)确实能带来职责分离的清晰性,但在数据量足够大时,这个额外的Meta层本身很可能先于Data层成为整个系统的瓶颈,反而制造了新的单点问题。当然对等结构并非没有代价,它把”如何在所有节点间维持元信息一致”这个问题转嫁给了自己,需要额外的机制(如选主、全局锁)来处理。这个取舍案例提示了一条更普遍的架构判断方法:引入新的一层抽象或角色分工之前,除了看它带来的职责清晰度收益,还要反过来评估这一层本身会不会在未来的规模增长中变成新的瓶颈,”加一层”不是免费的、默认正确的解法。
参考来源
- 位置:《高可用架构(第1卷)》第2章《高可用架构原理与分布式实践》"2.5 360分布式存储系统Bada的架构设计和应用"节,"2.5.2 整体架构"(源文件:_epub-src/OEBPS/Text/Chapter2_5_3.xhtml)
- 结论依据:原文对比BigTable式(MetaServer+DataServer)和Dynamo式(对等结构)两种设计,并说明Bada选择对等结构的理由是"为了部署、扩展等更方便……在计算机行业,加一层可以解决大部分问题,因此我们觉得对等网络的设计更有挑战性……在数据量更大的情况下,Meta节点极有可能成为瓶颈",直接支撑本卡片结论。
- 原始内容:以BigTable为代表的,有MetaServer、DataServer的设计……以Dynamo为代表的对等结构设计……为了部署、扩展等更方便,我们不希望在部署的时候需要分开部署点……在数据量更大的情况下,Meta节点极有可能成为瓶颈。