文件名称:线上最终一致性系统-htrc110 用户手册
文件大小:1.33MB
文件格式:PDF
更新时间:2024-06-30 06:35:47
分布式
5.3 线上最终一致性系统 线上最终一致性系统保证最终一致性,读服务 1~30ms,正常时写服务 100ms 以内,机 器出现故障时,某个数据分片的写服务可能出现 10~20s 的服务中断。为了便于介绍,将系 统命名为 KO。 KO 系统由一个主控机 Master 和大量的机器 group 组成,每个 group 由 N(N 是数据的 备份数)台工作机 Chunk Server,同一个 group 中同一时刻有且只有一台 Chunk Server 提供 写服务,称为 CS Master,其它 Chunk Server 与 CS Master 保持同步,称为 CS Slave。一般来 说,N = 3,任何一个写操作只需要写成功其中一台 CS Slave 和 CS Master 就可以返回客户端 表示成功。当 CS Master 宕机时,同一个 group 中与它保持同步最快的 CS Slave 接替它成为 CS Master,并触发一个运维操作,运维人员可在合适的时间上线一台机器到 group 中。新机 器加入集群以 group 为单位。KO 系统包含如下几个角色: 1, Master(Config Master)。集群主控机,通过 Master/Slave 强同步模式保证 HA。 2, CS Master。机器组中提供写服务的 Chunk Server。 3, CS Slave。机器组中提供 CS Master 的备份,可以提供读服务。 4, API。客户端请求 API。 整个系统大致的架构图如下: acquire lockacquire lock Application Client Lock Service Master SlaveSlave ChunkServer Group Master SlaveSlave ChunkServer Group Config Master Config Slavereplication Get tablet location Read/write request Heartbeat & control msg 写操作的大致流程为: 1, 请求 Master 或者从客户端缓存中获取待操作行所在的 Chunk Server Master 位置; 2, 往 Chunk Server Master 发送写操作; 3, Chunk Server Master 将写操作同步到同一个 group 下的 Chunk Server Slave; 4, Chunk Server Master 收到至少一个 Chunk Server Slave 的成功返回信息时写本地操作 日志并应用到内存中; 5, 返回客户端写操作成功或者失败原因; 如果Chunk Server Master返回客户端待操作行不在服务范围内,说明发生了 tablet迁移, 客户端重新请求 Master 获取 Chunk Server Master 位置信息并重试,同时更新客户端缓存。 读取操作与写操作流程类似,不同的是,可以根据读取的一致性要求选择读取同一个 group 下的 Chunk Server Master 或者 Chunk Server Slave。 在数据模型方面,提供类似 Bigtable 的 schema 支持,并保证单行操作的事务性。所有