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平台。
评论