其他分享
首页 > 其他分享> > TiDB:Raft与Multi Raft

TiDB:Raft与Multi Raft

作者:互联网

Leader:

Follower:

Region

Raft 日志复制

 

Leader日志写入的过程:

  1. Propose, Leader写入一条日志,准备开始同步, Leader发起Propose;
  2. Append: Leader在Propose后会将写入请求转换为写入日志,存到日志文件中;(日志组成:region_id + 序号+数据组成,日志存储在本地的RocksDB实例中);
  3. Replicate: Leader将日志分发给follower;follower收到日志后写入到本地存储中(Append); 返回消息给Leader确认;
  4. Commited: 当多数节点都返回了Append成功的消息后,Leader认为写入成功;此时可以保证Raft rocksdb的日志不丢失;(区别于用户的commit)
  5. Apply: Leader将数据写入TiKV中(一个TiKV中实际上有两个RocksDB,一个用于存储Raft Log,一个用于存储KV信息;)

Raft- Leader选举

 election_timeout默认10s,Raft在无主状态下多长时间会发起选举,如果follower 超过10s没收到Leader信息,该Region就会重新选举;第一个计时到时间的人首先称为candidate,并发起投票;

heartbeat_time_interval, Raft和follower的心跳间隔,默认10s;Leader和Follower的心跳检测,如果没收到心跳就会发起Vote

election_timeout > heartbeat_time_interval

election timeout:raft-election-timeout-ticks 

heartbeat time interva: raft-heartbeat-ticks

raft-base-tick-interval =1s

真实心跳时间: raft-heartbeat-ticks * raft-base-tick-interval

标签:Multi,Region,写入,follower,TiDB,Raft,日志,Leader
来源: https://blog.csdn.net/JSWANGCHANG/article/details/122534755