PhxPaxos - 多机状态拷贝类库


BSD
跨平台
C/C++

软件简介

PhxPaxos是腾讯公司微信后台团队自主研发的一套基于Paxos协议的多机状态拷贝类库。它以库函数的方式嵌入到开发者的代码当中,
使得一些单机状态服务可以扩展到多机器,从而获得强一致性的多副本以及自动容灾的特性。
这个类库在微信服务里面经过一系列的工程验证,并且我们对它进行过大量的恶劣环境下的测试,使其在一致性的保证上更为健壮。

特性

  • 基于Lamport的 Paxos Made Simple 进行工程化,不进行任何算法变种。

  • 使用基于消息传递机制的纯异步工程架构。

  • 每次写盘使用fsync严格保证正确性。

  • 一次Propose(写入数据)的Latency为一次RTT,均摊单机写盘次数为1次。

  • 使用点对点流式协议进行快速学习。

  • 支持Checkpoint以及对PaxosLog的自动清理。

  • 支持跨机器的Checkpoint自动拉取。

  • 一个PhxPaxos实例可以同时挂载多个状态机。

  • 可使用镜像状态机模式进行Checkpoint的自动生成。

  • 内置Master选举功能。

  • 线上数据的实时增量checksum校验。

  • 网络、存储、监控、日志模块插件化,可由开发者自定义。

局限

  • 一个PhxPaxos实例任一时刻只允许运行在单一进程(容许多线程)。

  • 这个类库没有内建对client-server的支持,开发者必须将类库的代码嵌入到自己的服务器代码里面,以实现这个功能。

  • PhxPaxos只容许运行在64位的Linux平台。