Skip to content

yaomer/raft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

raft

领导选举 ✔️
日志复制 ✔️
日志压缩 ✔️
成员变更 ✔️
状态机接口 ✔️
客户端 ✔️
Read Index ✔️
Lease Read ✔️

cluster

我们以一个简单的运行在raft上的k-v server为例

假设集群配置为5节点

# cluster nodes
node 127.0.0.1 8000
node 127.0.0.1 8001
node 127.0.0.1 8002
node 127.0.0.1 8003
node 127.0.0.1 8004

然后,你可以打开5个终端,在每个终端分别执行

$ ./serv 8000.conf
$ ./serv 8001.conf
$ ./serv 8002.conf
$ ./serv 8003.conf
$ ./serv 8004.conf

这样就可以将集群跑起来了

你可以动态改变节点的存活情况来观察raft的工作原理

  • raft-node接收的用户消息格式为<user>msg\r\n,响应格式由上层状态机(k-v)与客户端约定
    • 目前k-v只支持setget,所以响应有3种:+ok\r\n-err\r\n$reply\r\n
  • 如果raft-node发现自己不是leader,就会发送<host>host\r\n以帮助客户端重定向到leader

About

A simple implementation of raft

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published