← Home

Sraft (一)

21 September, 2020

今天开始算是正式编写Sraft这个库, 开发的原因有两个:

语言采用的是Go, 目前的编程模型大概也完成了, 下面我来介绍:

本人喜欢简单并且高效的设计, 对于设计复杂难以实现的东西会感到不适(脑子不够用),

Raft Kernel

整个编程模型会有比较多的模块, 整体采用的是微核架构, Raft Kernel会协调各个模块之间的工作.

模块之间的通信由Raft Kernel来完成. 通信方式采用Channel异步非阻塞的形式.

Exchange Network

外部通信从这里进入, 由Exchange Network将通信内容封装为事件, 发送给Raft Kernel.

或者Raft Kernel传递事件给Exchange Network, 再由Exchange Network执行外部通信.

State Machine

Raft协议的核心实现, 状态机会在Leader, Follower, Candidate三种角色之间自动切换, 每一角色处理的事件都是一样的, 但是具体过程是不一样的. (这个部分的密度会比较大)

Data Log Synchronizer

负责同步数据的模块, 采用的是日志提交形式.


以上的我目前已经构思出的编程模型, 但是为暂定. 实际的编写模型肯定会有少许修改.

PROJECT: github.com/sdttttt/sraft