读了一下CockroachDB的16年的设计翻译,找了一些CockroachDB的raft优化方法

1.选举优化,Cockroach使用随机时间,这样通信往返时间短的会更易第一个发起选举,更容易成为leader,减少了组内出现没有leader的时间

2.相对于tidb的multi raft来说,多了心跳合并的优化。减少了大量耗费在心跳上的流量,我不太清楚tidb的PD模块是不是也有这个功能。原理是引入了一种Node级别的lease,只要Node级别的lease有效,那么这个Node上的所有的raft group的leader的lease都是有效的。这样就不必频繁更新range级别的lease,只需要更新Node级别的lease即可

3.也有和tidb类似的分片过大拆分和过小合并政策,来控制multi raft组的数量

4.还有一个优化就是关闭某一些不活跃的raft group,基于的假设就是数据库这么大,其实,很多数据很长时间根本都碰不到,所以维护着lease没啥用。

5.范围租赁(Range Leases)优化,我看了一下介绍,感觉和tidb中的Lease Read读优化很像,也是确定一段时间的leader,将走raft确定leader的步骤优化了

粗略的看了一遍raft相关部分,优化部分提到的不多,而且感觉基本在tidb中都有相关的优化介绍

来源:

https://lihuanghe.github.io/2016/05/06/cockroachdb-design.html

https://github.com/cockroachdb/cockroach/blob/master/docs/design.md

以下是4个节点的store示意图。每个range都使用Raft协议复制3份。 相同颜色表示是相同的range副本。这里的架构和tidb的multiraft非常类似

Cockroach weights random timeouts such that the replicas with shorter round trip times to peers are more likely to hold elections first (not implemented yet).

Cockroach使用随机时间,这样通信往返时间短的会更易第一个发起选举。

Our Raft implementation was developed together with CoreOS, but adds an extra layer of optimization to account for the fact that a single Node may have millions of consensus groups (one for each Range). Areas of optimization are chiefly coalesced heartbeats (so that the number of nodes dictates the number of heartbeats as opposed to the much larger number of ranges) and batch processing of requests. Future optimizations may include two-phase elections and quiescent ranges (i.e. stopping traffic completely for inactive ranges).

Cockroach的Raft实现在CoreOS的基础上,增加额外的优化层,因为考虑到一个节点可能有几百万的一致性组(每个range一个)。少部分优化主要是合并心跳(与数量巨大的range相反,节点数量决定了心跳的数量)和 请求批处理。将来的优化还包括二阶段选举和静态range.

For these reasons, Cockroach introduces the concept of Range Leases: This is a lease held for a slice of (database, i.e. hybrid logical) time. A replica establishes itself as owning the lease on a range by committing a special lease acquisition log entry through raft. The log entry contains the replica node's epoch from the node liveness table--a system table containing an epoch and an expiration time for each node. A node is responsible for continuously updating the expiration time for its entry in the liveness table. Once the lease has been committed through raft the replica becomes the lease holder as soon as it applies the lease acquisition command, guaranteeing that when it uses the lease it has already applied all prior writes on the replica and can see them locally.

CockroachDB的raft优化相关推荐

  1. 一致性协议raft详解(四):raft在工程实践中的优化

    一致性协议raft详解(四):raft在工程实践中的优化 前言 性能优化 client对raft集群的读写 参考链接 前言 有关一致性协议的资料网上有很多,当然错误也有很多.笔者在学习的过程中走了不少 ...

  2. 开源数据库CockroachDB(二)

    上一篇:开源数据库CockroachDB(一) 转载自:CockroachDB中国社区 七.逻辑Map内容 逻辑上,Logical Map在用户实际数据前包含了一系列系统保留key-value对(由S ...

  3. 分布式 —— 基于Raft算法的KV服务

    第一章: CAP定理: 一致性:同步问题 可用性:高并发.性能高 分区容错性:选择备用 注意:实际情况中,这三个不能同时具备,往往会舍弃一个属性,一般分区容错性是优先考虑的,就只能从可用性和一致性中进 ...

  4. 分布式系统关注点(2)——烦人的数据不一致问题到底怎么解决?——通过“共识”达成数据一致性...

    阅读目录 "共识"是什么?为什么会产生? 拜占庭将军问题 BFT类算法 CFT类算法 结语 这次准备开启一个新的系列来写了,聊聊分布式系统中的关注点.节奏不会排的太紧凑,计划两周一 ...

  5. 漫话:如何给女朋友解释什么是语法糖?

    语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家Peter J. Landin发明的一个技术术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响, ...

  6. PCTP考试学习笔记之一:深入TIDB体系架构(下)

    作者: OnTheRoad 原文来源: https://tidb.net/blog/09cc69f4 本系列学习笔记根据官方课程<TiDB 高级系统管理 [TiDB v5]>整理,感谢官方 ...

  7. 漫话:如何给女朋友解释什么是Mock?

    某天晚上,接到测试的电话,他问为什么在日常环境我的接口使用不同的用户测试返回的内容都一样,我回答他:接口数据被我mock掉了,现在返回的都是mock数据.需要调一下mock的逻辑才行. 挂断电话之后, ...

  8. 聊聊Raft的性能优化

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 文章目录 引言 优化策略 Appe ...

  9. 让Raft变快100倍 - Dragonboat的写优化

    Dragonboat是近期开源的Go实现的多组Raft库,16字节荷载的写可以持续在900万次每秒,9:1高读写比下可以持续在超千万次每秒. 详细的benchmark信息可参考github项目首页,同 ...

最新文章

  1. 小白学数据分析------日活跃人数分析
  2. Java中关于String类型的10个问题
  3. CVPR 2020 分方向论文大盘点合集
  4. 用jdbc连接hive server需要用到的 几个jar包
  5. Dockerfile 中的 CMD 与 ENTRYPOINT
  6. Tahoma Arial Verdana三种字体的选择
  7. NetMeeting不能共享桌面的解决办法
  8. 计算机辅助园林设计ps,《CAD PS辅助园林设计》课程教学大纲.doc
  9. RTI_DDS自定义插件开发 9 API NDDS_Transport_Unshare_RecvResource_Fcn_rrEA
  10. 格兰蒂亚3 详细剧情攻略
  11. 蜀门linux一键端,【蜀门】网游单机版 蜀门镜像一键端 送全套GM口令工具刷金币钻石...
  12. c14cpm和dpm怎么换算_DPM7001液体闪烁计数器
  13. vue跑项目npm run dev 时报错cannot GET /;node-sass安装失败问题
  14. 如何获取腾讯视频的MP4播放地址及mp4文件,无需进行qlv转换mp4格式【亲测效果】
  15. Leetcode 1921. 消灭怪物的最大数量-排序+贪心
  16. 模型通道剪枝汇总(channel pruning)
  17. *5-1 CCF 2015-03-1 图像旋转
  18. 如何去使用Python分析股票数据?学到就是赚到
  19. 虚拟试衣:使用VITON或CP-VTON模型在DeepFashion数据集上进行虚拟试衣任务
  20. Spring的三级缓存解决循环依赖

热门文章

  1. 一款开源免费图床聚合平台 ImageHosting
  2. HEVC编码结构简要总结
  3. 欧盟电子雾化器检测及合规要求
  4. Python学习笔记(一)数据类型
  5. day34-数据分析与Excel
  6. python 寻找重复的数
  7. 海思平台入门1(基于海思Hi3559V200)
  8. DB2 For AS400 字符函数
  9. 苹果电脑Finder快捷键汇总
  10. JPEG2000编码流程