4.3 Raft算法 - 数据结构 - 机器学习
数据结构 - 机器学习
深度学习

当前位置:首页 » 区块链精品文章 » 正文
4.3 Raft算法
1189 人参与 2018年08月25日 17:23 分类 : 区块链精品文章 评论
由于Paxos太难懂、太难以实现,Raft算法应运而生。其目的是在可靠性不输于Paxos的情况下,尽可能简单易 懂。斯坦福大学的Diego Ongaro和John Ousterhout以易理解为目标,重新设计了一个分布式一致性算法Raft,并于2013年底公开发布。Raft既明确定义了算法中每个环节的细节, 也考虑到了整个算法的简单性与完整性。与Paxos相比,Raft更适合用来学习以及做工程实现。下面,笔者将以通俗易懂的方式来描述这个过程。
百花村村长一人负责对外事务。比如,县和乡两级的公文来往,公粮征收,工务摊派,税收等。
Raft是一个强Leader的共识协议。我们想象百花村是一个服务器集群,而这个集群的Leader就是村长, 村里的每户人家(follower)对应一个服务器,每户人家都保存了一个数据副本。所有的数据副本都必须保证一致性。即上级官员下到村里视察时,从每户 人家获得的信息应该是一样的。
百花村村长通过村户选举产生。谁得的票数多(简单多数)谁就当选村长。村长有任期概念(term)。任期是一直向上增长的:1,2,3,…,n,n+1,…。
这里要处理的是平票(split vote)的情况。在平票的情况下,该村村长选举失败,每户人家被分配不同的睡眠值。在睡眠期间的村户不能发起选举,但是可以投票。而且只有选举权,但是 没有被选举权。第一个走出睡眠期的村户发起新任期的选举。由于每户人家有不同长度的睡眠期,这保证了选举一定会选出一个村长,而不会僵持不下,不会出现每 次选举都平票的情况。一旦村长产生,任何针对百花村的“写”(比如政府政策宣示,普法教育)必须经过村长。
村长每天都要在村里转一圈,让所有人都看见。表明村长身体健康,足以处理公务。
村长选举出来后,要防止村长发生“故障”,必须定期检测村长是否失效。一旦发现村长发生“故障”,就要重新选举。
村长接收到上级命令,该命令数据处于未提交状态(uncommitted),接着村长会并发向所有村户发送命令, 复制数据并等待接收响应,确保至少超过半数村户接收到数据后再向上级确认数据已接收(命令已执行)。一旦向上级发出数据接收Ack响应后,表明此时数据状 态进入“已提交”(committed),村长再向村户发通知告知该数据状态已提交(即命令已执行)。
下面我们来测试各种异常情况。
(1)异常情况1
上级命令到达前,村长挂了。这个很简单,重新选举村长。上级命令以及来自外面的请求会自动过时失效,他们会重发命令和请求。
(2)异常情况2
村长接到上级命令,还没有来得及传达到各村户就挂了。这个和异常情况1类似,重新选举村长。上级命令以及来自外面的请求会自动过时失效。他们会重发命令和请求。
(3)异常情况3
村长接到上级命令,已传达到各村户,但是各村户尚未执行命令,村长就挂了。这种异常情况下,重新选举村长。新村长选出后,由于已收到命令,就可以等待各村户执行命令(也就是Commit数据)。上级命令以及来自外面的请求会自动过时失效。有可能,他们会重发命令和请求。Raft要求外部的请求可以自动去除重复。
(4)异常情况4
村长接到上级命令,已传达到各村户,各村户执行了命令,但是村长并没有收到通知,就在这时候村长挂了。这种情况类似上一种情况,新村长选出后,即可等待通知,完成剩下的任务。外部也会接到通知命令(已完成)。
(5)异常情况5
在命令执行过程中,村长身体不适,不能处理公务。因为百花村没有收到村长的“心跳”,百花村的村户就会自动选举(当前任期+1)任村长。这个时候就出现2个村长。这个时候新村长就会接过老村长角色,继续执行命令。即使原村长身体康复,也将成为普通村户。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=96
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
- 在数字化时代达成信任2018-09-04 23:20
- 6.1 匿名的基础知识2018-09-12 14:04
- 第四章 区块链的应用前景2018-09-21 10:38
- 区块链与数字货币2018-08-28 13:55
网站分类
- 数据结构
- 数据结构视频教程
- 数据结构练习题
- 数据结构试卷
- 数据结构习题解析
- 数据结构电子书
- 数据结构精品文章
- 区块链
- 区块链精品文章
- 区块链电子书
- 大数据
- 大数据精品文章
- 大数据电子书
- 机器学习
- 机器学习精品文章
- 机器学习电子书
- 面试笔试
- 物联网/云计算
标签列表
- 数据结构 (39)
- 数据结构电子书 (20)
- 数据结构习题解析 (8)
- 数据结构试卷 (10)
- 区块链是什么 (261)
- 数据结构视频教程 (31)
- 大数据技术与应用 (12)
- 百面机器学习 (14)
- 机器学电子书 (29)
- 大数据电子书 (37)
- 程序员面试 (10)
- RFID (21)
最近发表
- 找出数组中有3个出现一次的数字
- 《百面机器学习》电子书下载
- 区块链精品电子书《深度探索区块链:Hyperledger技术与应用_区块链技术丛书》张增骏
- 区块链精品电子书《比特币:一个虚幻而真实的金融世界》
- 区块链精品电子书《图说区块链》-徐明星 & 田颖 & 李霁月
- 区块链精品电子书《是非区块链:技术、投机与泡沫》-英国《金融时报》
- 区块链精品电子书《商业区块链:开启加密经济新时代》-威廉·穆贾雅
- 区块链精品电子书《人工智能时代,一本书读懂区块链金融 (互联网_时代企业管理实战系列)》-马兆林
-
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区