PhxPaxos多机状态拷贝类库
PhxPaxos是腾讯公司微信后台团队自主研发的一套基于Paxos协议的多机状态拷贝类库。它以库函数的方式嵌入到开发者的代码当中, 使得一些单机状态服务可以扩展到多机器,从而获得强一致性的多副本以及自动容灾的特性。 这个类库在微信服务里面经过一系列的工程验证,并且我们对它进行过大量的恶劣环境下的测试,使其在一致性的保证上更为健壮。
特性
- 基于Lamport的 Paxos Made Simple 进行工程化,不进行任何算法变种。 
- 使用基于消息传递机制的纯异步工程架构。 
- 每次写盘使用fsync严格保证正确性。 
- 一次Propose(写入数据)的Latency为一次RTT,均摊单机写盘次数为1次。 
- 使用点对点流式协议进行快速学习。 
- 支持Checkpoint以及对PaxosLog的自动清理。 
- 支持跨机器的Checkpoint自动拉取。 
- 一个PhxPaxos实例可以同时挂载多个状态机。 
- 可使用镜像状态机模式进行Checkpoint的自动生成。 
- 内置Master选举功能。 
- 线上数据的实时增量checksum校验。 
- 网络、存储、监控、日志模块插件化,可由开发者自定义。 
局限
- 一个PhxPaxos实例任一时刻只允许运行在单一进程(容许多线程)。 
- 这个类库没有内建对client-server的支持,开发者必须将类库的代码嵌入到自己的服务器代码里面,以实现这个功能。 
- PhxPaxos只容许运行在64位的Linux平台。 
评论
