文件名称:半线上及线下系统-htrc110 用户手册
文件大小:1.33MB
文件格式:PDF
更新时间:2024-06-30 06:35:48
分布式
5.5 半线上及线下系统 半线上及线下系统指 GFS + Bigtable,开源的实现有 HDFS + HBase/Hypertable,不过开源 的实现远没有达到 GFS + Bigtable 应有的高度。这里之所以将 GFS + Bigtable 划分为半线上及 线下系统,不是因为这套解决方案不能支持线上应用,而是因为这套应用在并发量,机器异 常处理等都做得很极限,如果支持线上的低延迟,永远不停读服务,整个系统过于复杂。我 们姑且认为 GFS + Bigtable 这套服务能设计成支持半线上及线下应用,如增量建网页库,已 经是非常大的挑战了。 5.5.1 两层结构 GFS 和 Bigtable 采用两层结构,GFS 关注文件存储文件,虽然对外提供文件接口,但是 保证文件可靠性,Bigtable 关注用户接口问题,在 GFS 之上提供支持简单 schema 的 NOSQL 访问接口。 GFS 和 Bigtable 两层结构非常巧妙地解决了一致性的问题,底层的 GFS 提供弱一致性, 写操作可能出现重复记录,Bigtable 通过一种类似 B+树的方式索引写入到 GFS 中的记录, 很好地解决了一致性问题。Bigtable 中同一个 tablet 同一时刻只能被同一个 Tablet Server 工 作机服务,不过由于底层可靠的 GFS 存储,机器宕机时只需要在其它机器中将 GFS 中持久 化的内容加载到内存中即可,大大地减少了宕机恢复需要的时间。GFS 相当于是 Bigtable 的 可靠的共享存储,由于 GFS 只需要提供文件接口,所以内存操作简单,出现代码错误的可能 性很小,并且,GFS 可以提供类似 Snapshot 的功能;Bigtable 内部逻辑和内存操作非常复杂, 有了 GFS 的 Snapshot 功能,Bigtable 可以用来备份数据,从而 Bigtable 出现 bug 时,可以修 改 bug 后回滚回去重新测试。 前面提到的线上最终一致性系统采用单层结构的设计,把分裂和迁移看成是一种不是特 别常见的情况,所以不是特别注重分裂和迁移的效率,且为了解决一致性引入了Chunk Server group 的概念。而 GFS + Bigtable 的设计中,所有的工作机,即 Chunk Server 和 Tablet Server 都是完全对等的,一台 Tablet Server 机器宕机后,整个集群中的所有的机器都可以加载这个 机器上服务的子表,扩展性基本做到了极限。集群的规模越大,GFS + Bigtable 的解决方案越 有优势,很适合平台化,唯一的缺点就是过于复杂。 采用两层设计,底层的 GFS 可以简化很多,只需要考虑批量的读写,提供简单的 Append 模型。上层的 Bigtable 负责将写请求聚合成大块,随机读取操作的缓存等。 GFS + Bigtable 解决方案最适合的场景是半线上及线下应用,比如搜索类及数据仓库类应 用,系统中的磁盘和内存比大致为 256 ~ 1000 : 1,采用廉价的 SATA 盘作为底层存储,一般 单机 12 * 1T SATA 盘配置。由于系统在软件层面具有无可匹敌的容错性,可以极大地降低运 维成本,节省服务器开销。