CockroachDB学习笔记——[译]Scaling Raft
- 原文链接:https://www.cockroachlabs.com/blog/scaling-raft/
- 原作者:Ben Darnell
- 原文日期:Jun 11, 2015
- 译:zifeiy

在CockroachDB中,我们使用木筏一致算法(Raft consensus algorithm)来确保即使是在及其发生故障的时候,你的数据也保持一致性。
在大多数使用木筏一致算法的数据库系统中——诸如etcd和Consul——这个系统是一个木筏一致群(Raft consesus group)。然而,在CockroachDB中,数据被分到了 范围(ranges) 中,每一个范围都有他自己的一个一致群。
这意味着每一个节点都有可能被分成成百上千的一致群。
这种形式提出了一种挑战,我们通过在顶层引入一层Raft(竹筏)来解决这个问题,我们将顶层的Raft曾作MultiRaft。
在单个范围(range)内,一个节点(node)(是一个,而不是三个或五个)被选举为领导者(leader),它周期性地向他的最随者们发送心跳消息。

当系统增长到包括更多的范围(range)时,处理心跳所需的流量也随之增加。

范围(range)的数量远比节点(node)的数量要多(保持范围的数量较小能够在节点失败的时候帮助提高恢复速度),这些许多的范围又会包含重叠的成员。
这就是引入MultiRaft的原因:
不是让每一个范围单独地运行Raft,而是管理整个节点的值域作为一个整体的组。
每一对节点在每一个时间点上只需要交换一次心跳,而不用考虑节点里面包含了多少个范围。
(译者的理解:每一个节点都将他其中的范围的所有心跳打包后一起发出去)

除了减少心跳网络流量,多阀(MultiRaft)也可以其他领域的效率。
举个例子,多阀仅仅需要少量的,固定数量的goroutines(通常3个),而不用在每一个范围(range)内都部署一个goroutine。
实现和测试一致性算法是一项艰巨的任务,所以我们很高兴能与来自CoreOS的etcd团队紧密合作,而不是重投开始便携这部分的代码。
etcd中的竹筏模拟 是建立在纯净抽象的基础上的,所以我们发现它很容易适应我们的不同寻常的需求,
并且我们已经有能力为etcd和社区做出相应改进。
CockroachDB学习笔记——[译]Scaling Raft的更多相关文章
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- CockroachDB学习笔记——[译]如何优化Go语言中的垃圾回收
原文链接:https://www.cockroachlabs.com/blog/how-to-optimize-garbage-collection-in-go/ 原作者:Jessica Edward ...
- CockroachDB学习笔记——[译]CockroachDB是如何进行分布式原子事务的
原文:How CockroachDB Does Distributed, Atomic Transactions 原文链接:https://www.cockroachlabs.com/blog/how ...
- CockroachDB学习笔记——[译]在CockroachDB中如何让在线模式更改成为可能
原文链接:https://www.cockroachlabs.com/blog/how-online-schema-changes-are-possible-in-cockroachdb/ 原作者: ...
- CockroachDB学习笔记——[译]Cgo的成本与复杂性
原文链接:https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ 原作者:Tobias Schottdorf 原文日期:D ...
- CockroachDB学习笔记——[译]为什么Go语言是CockroachDB的正确选择
原文链接:https://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/ 原作者:Jessica Edw ...
- CockroachDB学习笔记——[译]The New Stack:遇见CockroachDB,一个弹性SQL数据库
原文链接:https://www.cockroachlabs.com/blog/the-new-stack-meet-cockroachdb-the-resilient-sql-database/ 原 ...
- CockroachDB学习笔记——[译]Hello World
原文链接:https://www.cockroachlabs.com/blog/hello-world/ 原作者:Spencer Kimball 原文日期:Jun 4, 2015 译:zifeiy 数 ...
- CockroachDB学习笔记——对此的选择
无意间了解到TiDB,然后知道了他是一款国产团队开源的NewSQL数据库, 看了一下官网,有很多中文的文档和技术分享挺不错的. 但是安装起来好像挺麻烦的说. 测试的硬件环境 也吓死我了,我只有一台笔记 ...
随机推荐
- APP微信登录 服务器处理代码
采用框架THINKPHP5 需要客户端传的参数有 udid openid nickname avatar_path /* * @param 第三方微信登录 * @param openid udid ...
- JQuery 遍历 操作数组 map、grep、filter 的区别
filter() 方法将匹配元素集合缩减为匹配指定选择器的元素.例如:改变所有 div 的颜色,然后向类名为 "middle" 的类添加边框:$("div"). ...
- redis过期机制及排行榜
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略.redis 提供 6种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i].expire ...
- ln -s /usr/local/jdk1.8.0_201/bin/java /bin/java
ln -s /usr/local/jdk1.8.0_201/bin/java /bin/java
- idea 包.路径切换为目录结构
取消勾选
- C# Transaction 事务处理
class //student [Serializable] public class Student { public string FirstName { get; set; } public s ...
- VSCode:配置自动修复eslint
{ //"tfvc.location": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Profess ...
- mybatis-plus 相关
这里有几个很全的教程: https://www.cnblogs.com/okong/p/mybatis-plus-guide-one.html mybtais-plus学习--BaseMapper提供 ...
- Pollard-Rho 总结
将一个大数\(N\)分解质因子. 试除法,暴力枚举\(1-\sqrt{N}\)的数.时间复杂度:\(O(\sqrt{N})\). 通常,这个复杂度够了,但有时,\(N\leq10^{18}\). 这就 ...
- ES 集中式日志分析平台 Elastic Stack(介绍)
一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 File ...