/naruto

一个说到做到的KV

Primary LanguageGoDo What The F*ck You Want To Public LicenseWTFPL

Naruto

一个说到做到的牛逼KV

├── conf                    
├── doc                     
├── helper------------------与raft逻辑无关的模块,抽离出来防止代码太乱
│   ├── db------------------封装了一下pebble
│   │   └── test-data       
│   ├── event --------------观察者模式,估计用不上
│   ├── logger
│   ├── member--------------集群成员管理
│   ├── rpc-----------------强依赖protobuf的rpc接口定义
│   │   └── stupid----------rpc的一个实现,具有池化的buffer,目前只实现了异步调用
│   ├── timer---------------具有随机定时功能的定时器
│   └── util----------------目前只写了几个[]byte与整数来回转换的逻辑
├── raft---------------------raft逻辑
│   ├── candidateHandler.go
│   ├── leaderHandler.go
│   ├── followerHandler.go---三个角色下对rpc,timer timeout事件的handler实现
│   ├── handler.go-----------handler注册与通用handler(term,commit index)实现
│   ├── client.go------------rpcclient注册   
│   ├── kv.go----------------kv存储实现,依赖helper里的db
│   ├── log.go---------------log存储实现,依赖helper里的db
│   ├── stat.go--------------节点状态实现,依赖helper里的db
│   ├── msg------------------raft所需的rpc消息体的定义
│   │   ├── msg.pb.go
│   │   ├── msg.proto
│   └── raft.go--------------启动器            
└── startup.sh---------------docker测试启动器

有状态startup有依赖的顺序: member->server statDB->timer