本项目为学习项目,仅供参考。
PaxosKV是分布式强一致的KV内存存储数据库,使用Paxos共识算法确保线性一致性。
Paxos算法核心实现参考了 phxpaxos的c++实现,位于模块 paxoskv-algorithm。其实现不依赖网络和存储,仅完成了算法核心逻辑,实现非常优雅。算法核心逻辑均通过了测试。
网络通信部分用netty实现,位于模块paxoskv-remoting(第一次用netty写东西,代码可能比较搓)
存储方面使用了内存存储(持久化和快照写起来太麻烦。。。)
命令行启动参数为
- --id代表节点id
- -c或--cluster代表集群地址的集合,以逗号,分隔开
- -p或--port代表部署端口 对于三节点的paxos group,示例如下
--id 1 -c 127.0.0.1:8888,127.0.0.1:8889,127.0.0.1:8890 -p 8888
--id 2 -c 127.0.0.1:8888,127.0.0.1:8889,127.0.0.1:8890 -p 8889
--id 3 -c 127.0.0.1:8888,127.0.0.1:8889,127.0.0.1:8890 -p 8890
使用了restful风格的交互,
- 提议某个值使用 PUT方法,uri代表key,body代表值
- 线性一致读使用 GET方法, uri代表key
- 集群动态扩容
- Master选举