Skip to content

使用paxos共识算法实现的分布式强一致kv存储

Notifications You must be signed in to change notification settings

0yuyuko0/paxoskv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

本项目为学习项目,仅供参考。

PaxosKV

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选举

About

使用paxos共识算法实现的分布式强一致kv存储

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages