TiDB:Raft与Multi Raft
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日志写入的过程:
- Propose, Leader将写请求转化为Raft Log;
- Append: 日志持久化日志, Leader在Propose后会将写入请求转换为写入日志,存到日志文件中;(日志组成:region_id + 序号+数据组成,日志存储在本地的RocksDB实例中);
- Replicate: Leader将日志分发给follower;follower收到日志后写入到本地存储中(Append); 返回消息给Leader确认;
- Commited: 当多数节点都返回了Append成功的消息后,Leader认为写入成功;此时可以保证Raft rocksdb的日志不丢失;(区别于用户的commit)
- Apply:将数据写入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
TiDB:Raft与Multi Raft相关推荐
- 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)
编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...
- Nacos如何实现Raft算法与Raft协议原理详解
前言 大名鼎鼎的Paxos算法可能不少人都听说过,几乎垄断了一致性算法领域,在Raft协议诞生之前,Paxos几乎成了一致性协议的代名词.但是对于大多数人来说,Paxos算法太难以理解了,而且难以实现 ...
- raft java库_结合consul raft库理解raft
一 入口 github.com/hashicorp/consul/agent/consul/server.go func (s *Server) setupRaft() error { 状态机,用于c ...
- TiDB ——TiKV
TiDB --TiKV TiKV持久化 TiKV架构和作用 TiKV数据持久化和读取 TiKV如何提供MVCC和分布式事务支持 TiKV基于Raft算法的分布式一致性 TiKV的coprocessor ...
- TiDB:基于 Raft 的 HTAP 数据库
目录 1. 简介 2. 基于 Raft 的 HTAP 3. TiDB 架构 4. Multi-Raft 存储 5. HTAP 引擎 6. 实验 7. 相关工作 8. 结论 摘要 混合事务和分析处理(H ...
- CockroachDB的raft优化
读了一下CockroachDB的16年的设计翻译,找了一些CockroachDB的raft优化方法 1.选举优化,Cockroach使用随机时间,这样通信往返时间短的会更易第一个发起选举,更容易成为l ...
- 从paxos到raft zab,为何raft能够“独领风骚”
文章目录 RAFT出现的缘由 RAFT 的实现 STATE MACHINE Log Replicated State Machine Leader Election 基本角色 关键变量 基本选举过程 ...
- Paxos和Raft的前世今生
前言 在保证数据安全的基础上,保持服务的持续可用,是核心业务对底层数据存储系统的基本要求.业界常见的1主N备的方案面临的问题是"最大可用(Maximum Availability)" ...
- 浅谈分布式一致性:Raft 与 SOFAJRaft
简介: SOFAJRaft已开源 作者 | 家纯 来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致 ...
最新文章
- [k8s] 第二章 十分钟带你搭建k8s集群环境
- lte 中crs_LTE网络CRS功率配置及其影响研究
- excel可视化图表插件_Axure 教程:利用图表前端插件实现高级可视化图表
- [LeetCode] NO.292 Nim Game
- flash写保护原理_为什么固态会掉盘?著名的30分钟大法修复是什么原理?
- python中merge函数怎么用_Python Merge函数原理及用法解析
- luogu P3295 [SCOI2016]萌萌哒
- Python——单元测试
- 1.7见识一下什么叫Linux驱动:LED
- 如果每天给你888元,只能看书学习,不能玩手机电脑,你能坚持多少天?
- Tcp keepalive详解
- URAL K-based Numbers(1-3)
- 设计模式,六大设计原则,类的特性
- CNC加工中心程序代码大全,你还不收藏吗?
- 海信电视显示有设备连接服务器,海信电视屏幕上显示“智能电视系统启动中,请稍后”是什么意思?怎样处理?...
- Zhu-Net——一个隐写分析网络
- 判断入射满射c语言编码,数学上可以分三类函数包括() 答案:单射双射满射...
- js身份证号码带*号处理
- 情怀——推荐梁晓声新作《未死的沙威》
- twitter开源_30位开源社区经理将在Twitter上关注
热门文章
- TikTok话题标签玄机何在,KOLBOX带你摆脱无效标签!
- with root cause解决办法
- 涡轮发动机图测试线2010开关测试机SW辊子输送机用抓手SW双头精雕机IGSFPC折弯设备、FPC软板折弯机SWZ4直流电机_三维图Z4-112-4-1_5.5KW_160-1抛光机三维图
- [BZOJ 3894]文理分科
- tf.expand_dims和tf.squeeze函数
- H264的I/P/B帧类型判断(一)
- Vue框架的学习(Vue的基础指令操作二 V-For)第二课
- 字母上面加(箭头,^,波浪线,横线,一个点,两个点)markdown表达
- 生产车间管理制度:优化生产流程,提高效率和安全性
- cordova安装启动