Skip to content

java实现的基于raft算法和netty网络通信的分布式强一致kv存储。

Notifications You must be signed in to change notification settings

0yuyuko0/raftkv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

RaftKV

RaftKV是分布式强一致的KV存储数据库,使用raft共识算法确保线性一致性。

实现

算法实现

raft算法核心实现参考了 etcd的go实现,位于模块 raftkv-raft。其实现不依赖网络和存储,仅完成了算法核心逻辑,实现非常优雅。算法核心逻辑均通过了测试。

网络通信

网络通信部分用netty实现,位于模块raftkv-remoting(第一次用netty写东西,代码可能比较搓)

数据存储

存储方面使用了内存存储(持久化和快照写起来太麻烦。。。)

使用

启动

命令行启动参数为

  • --id代表节点id
  • -c或--cluster代表集群地址的集合,以逗号,分隔开
  • -p或--port代表部署端口 对于三节点的raft 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

还未完成的功能

  • 集群动态扩容
  • 持久化和快照
  • PreVote

About

java实现的基于raft算法和netty网络通信的分布式强一致kv存储。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages