ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TiDB:Raft与Multi Raft

2022-01-17 12:00:02  阅读:313  来源: 互联网

标签:Multi Region 写入 follower TiDB Raft 日志 Leader


Leader:

  • 集群的管理者
  • 所有读写流量都是走Leader
  • Leader会周期性向follower发出心跳信息;并且会将写的数据以日志的方式传递给其他follower;
  • 当写入的数据成员过半,就认为写入成功;

Follower:

  • 被管理者
  • 对其他的服务作出响应
  • 接受leader的日志;
  • 如果长时间没收到leader的通知信息,就会将自己角色转换为后选择candidate,发起投票,票多着升级为Leader;

Region

  • 是按照Key排序的连续的有序集合;
  • 当Region插入达到96MB后会另起一个新Region;
  • 初始化时,Region内的数据是连续的,Region中间也是连续的,左闭右开区间;region1: [1,1000), region2:[1000-2000),region3:[2000,3000)
  • 随着数据的修改(例如UPDATE等),Region大小会发生变化,当数据涨到144M的时候会自动分裂;当Region过小的时候会进行Region的合并;(分裂和合并的大小可以自定义)
  • 一个Region构成一个Raft group,多个Region会形成多个Raft Group--Multi Raft
  • 如果一个TiKV中的Region超过5W,会影响性能;

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有