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数据库, 看了一下官网,有很多中文的文档和技术分享挺不错的. 但是安装起来好像挺麻烦的说. 测试的硬件环境 也吓死我了,我只有一台笔记 ...
随机推荐
- Web服务器主动推送技术
HTTP协议遵循经典的客户端-服务器模型,客户端发送一个请求,然后等待服务器端的响应,服务器端只能在接收到客户端的请求之后进行响应,不能主动的发送数据到客户端. 客户端想要在不刷新页面的情况下实时获取 ...
- 正则表达式匹配IP地址
'''首先分析ip地址的特征:255.255.255.255,前三位的数字处理基本一致 1位: 0-9 \d2位:10-99 [1-9]\d3位:100-19 ...
- Educational Codeforces Round 74 (Rated for Div. 2) A. Prime Subtraction
链接: https://codeforces.com/contest/1238/problem/A 题意: You are given two integers x and y (it is guar ...
- 2、组件注册-@Configuration&@Bean给容器中注册组件
2.组件注册-@Configuration&@Bean给容器中注册组件 2.1 创建maven项目 spring-annotation pom.xml文件添加 spring-context 依 ...
- 3、Spring Boot 2.x 核心技术
1.3 Spring Boot 核心技术 1.3.1 起步依赖 为项目的依赖管理提供帮助.起步依赖其实就是特殊的Maven,利用了传递依赖解析,把常用库聚合在一起,组成几个为特定功能而定制的依赖. 1 ...
- 时间戳、String、Date转换
时间戳(String or long) =>Date long s=1557230621043L; Date date=new Date(s); System.out.println(date) ...
- MySQL B+树 的插入与删除
一.MySQL Index 的插入 有如下B+树,其高度为2,每页可存放4条记录,扇出为5.所有记录都在叶子节点上, 并且是顺序存放,如果用户从最左边的叶子节点开始顺序遍历,可以得到所有简直的顺序 排 ...
- the schema version of 'microsoft.aspnet.mvc' is incompatible with version of nuget
Nuget versioning issue with package restore http://stackoverflow.com/questions/12035976/nuget-versio ...
- SSH远程连接排错的过程
SSH远程连接排错的过程 http://note.youdao.com/noteshare?id=bc81e9036cd2067cb1857ca9f54299a7 补充 ping命令用来测试主机之间网 ...
- python爬虫demo01
python爬虫demo01 1 import requests, json, time, sys 2 from bs4 import BeautifulSoup 3 from contextlib ...