目录

从零开始学TiDB(5)Raft与Multi Raft

leader是集群中领导者,所有的读写都是走leader,follower副本不参加读写,leader会周期性的向follower发出心跳,同时也会把自己的日志同步给follower。

follower不参与读写,只会对其它服务做出相应,并同步leader的日志。如果长时间收不到leader的心跳信息,这时候follower会把自己的角色变为condidate(候选者),并发起投票。

其中一个region 及其两个副本 构成一个raft group ,多个raft group 构成了multi raft。

Raft 日志复制

  1. propose阶段客户端接收到请求操作
  2. append 阶段:raft log 已经持久化到 rocksdb raft中 (只在leader节点)
  3. replicate阶段:把leader节点的raft log 发到其它TiKV节点,同时持久化到自己的rocksdb raft中
  4. commit阶段:其它节点将raft log持久化成功后 返回leader 一个响应值,根据raft协议,超过一半返回响应成功,则commit成功
  5. Apply阶段:将raft log写入到rockdb KV中(这一步是实际的数据落盘,也就是用户层面的commit阶段)

Raft Leader选举

在集群刚开始创建时,大家都是follower,这时候每个region 都有一个计时器(election timeout),谁先到了election timeout则进入candidate 阶段并发起选举,当选leader。如果同时有多个candidate ,这时候每个region都会投票给自己,则选举失败,重新开启新一轮投票,直到选出leader。

如果此时leader宕机,followrer节点接收不到leader节点的心跳,则会倒计时(heart beat interval ),如果到了heart beat interval followrer节点将会进入candidate阶段,并发起选举,当选leader。

相关参数:

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
TiDB_PingCAP2 天前
TiDB 观测性解读(一)丨索引观测:快速识别无用索引与低效索
数据库·tidb·索引优化
PingCAP3 天前
TiDB 观测性解读(一)丨索引观测:快速识别无用索引与低效索引
数据库·tidb
24k小善6 天前
flink集成tidb cdc
大数据·flink·tidb
TiDB_PingCAP6 天前
海量数据融合互通丨TiDB 在安徽省住房公积金监管服务平台的应用实践
分布式·tidb·htap
蒂法就是我8 天前
什么是TiDB,什么是分布式数据库?它和 MySQL 比优缺点是什么?
数据库·分布式·tidb
PingCAP10 天前
海量数据融合互通丨TiDB 在安徽省住房公积金监管服务平台的应用实践
分布式·tidb
zerolbsony11 天前
tidb vs starrocks 资源估算pk
数据库·tidb·数据库开发
霍小毛16 天前
Hive 与 TiDB 在大数据解析场景中的对比分析
大数据·hive·tidb
宽带你的世界22 天前
TiDB 是一个分布式 NewSQL 数据库
数据库·分布式·tidb
资讯分享周22 天前
TiDB 助力广发银行新零售信贷业务管理平台上线
tidb·零售