TiDB中的raft协议及优化

Raft 是一个 replication log + State Machine 的模型,我们只能通过 leader 进行写入,leader 会将 command 通过 log 的形式复制到 followers,当集群的大多数节点都收到了这个 log,我们就认为这个 log 是 committed,可以 apply 到 State Machine 里面。

TiKV 的 Raft 主要移植 etcd Raft,支持 Raft 所有功能,包括:

    Leader election

     Log replicationLog compaction

     Membership changesLeader transfer

     Linearizable / Lease read

经典raft协议数据处理流程

 1. Leader 收到 client 发送的 request。

 2. Leader 将 request append 到自己的 log。

 3. Leader 将对应的 log entry 发送给其他的 follower。

4. Leader 等待 follower 的结果,如果大多数节点提交了这个 log,则 apply。

5. Leader 将结果返回给 client。

6. Leader 继续处理下一次 request。

异步Raft协议改造

 1.Leader 接受一个 client 发送的 request。

 2. Leader 将对应的 log 发送给其他 follower 并本地 append。

 3. Leader 继续接受其他 client 的 requests,持续进行步骤 2。

 4.Leader 发现 log 已经被 committed,在另一个线程 apply。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值