6.1.9 讨论
GFS+Bigtable两层架构以一种很优雅的方式兼顾系统的强一致性和可用性。底层文件系统GFS是弱一致性系统,可用性和性能很好,但是多客户端追加可能出现重复记录等数据不一致问题;上层的表格系统Bigtable通过多级分布式索引的方式使得系统对外整体表现为强一致性。Bigtable最大的优势在于线性可扩展,单台机器出现故障可将服务迅速(一分钟以内)迁移到整个集群。Bigtable架构最多可支持几千台的集群规模,通过自动化容错技术大大降低了存储成本。
Bigtable架构也面临一些问题,如下所示:
●单副本服务。Bigtable架构非常适合离线或者半线上应用,然而,Tablet Server节点出现故障时部分数据短时间内无法提供读写服务,不适合实时性要求特别高的业务,如交易类业务。
●SSD使用。Google整体架构的设计理念为通过廉价机器构建自动容错的大集群,然而,随着SSD等硬件技术的发展,机器宕机的概率变得更小,SSD和SAS混合存储也变得比较常见,存储和服务分离的架构有些不太适应。
●架构的复杂性导致Bug定位很难。Bigtable依赖GFS和Chubby,这些依赖系统本身比较复杂,另外,Bigtable多级分布式索引和容错等机制内部实现都非常复杂,工程量巨大,使用的过程中如果发现问题很难定位。
总体上看,Bigtable架构把可扩展性和成本做到了极致,但在线实时服务能力有一定的改进空间,适合通用的离线和半线上应用场合。