关于共识算法
来源:互联网 发布:linux下如何查找文件 编辑:程序博客网 时间:2024/06/12 22:39
实际上,要保障系统满足不同程度的一致性,往往需要通过共识算法来达成。
共识算法解决的是对某个提案(Proposal),大家达成一致意见的过程。提案的含义在分布式系统中十分宽泛,如多个事件发生的顺序、某个键对应的值、谁是领导……等等,可以认为任何需要达成一致的信息都是一个提案。
注:实践中,一致性的结果往往还需要客户端的特殊支持,典型地通过访问足够多个服务节点来验证确保获取共识后结果。
问题挑战
实际上,如果分布式系统中各个节点都能保证以十分强大的性能(瞬间响应、高吞吐)无故障的运行,则实现共识过程并不复杂,简单通过多播过程投票即可。
很可惜的是,现实中这样“完美”的系统并不存在,如响应请求往往存在时延、网络会发生中断、节点会发生故障、甚至存在恶意节点故意要破坏系统。
一般地,把故障(不响应)的情况称为“非拜占庭错误”,恶意响应的情况称为“拜占庭错误”(对应节点为拜占庭节点)。
常见算法
针对非拜占庭错误的情况,一般包括 Paxos、Raft 及其变种。
对于要能容忍拜占庭错误的情况,一般包括 PBFT 系列、PoW 系列算法等。从概率角度,PBFT 系列算法是确定的,一旦达成共识就不可逆转;而 PoW 系列算法则是不确定的,随着时间推移,被推翻的概率越来越小。
理论界限
搞学术的人都喜欢对问题先确定一个界限,那么,这个问题的最坏界限在哪里呢?很不幸,一般情况下,分布式系统的共识问题无解。
当节点之间的通信网络自身不可靠情况下,很显然,无法确保实现共识。但好在,一个设计得当的网络可以在大概率上实现可靠的通信。
然而,即便在网络通信可靠情况下,一个可扩展的分布式系统的共识问题的下限是无解。
这个结论,被称为 FLP 不可能性 原理,可以看做分布式领域的“测不准原理”。
- 关于raft共识算法
- 关于共识算法
- Exonum中的共识算法
- Hyperleger源码分析--共识算法
- Hyperleger源码分析--共识算法
- Hyperleger--共识算法 (2)
- 区块链核心技术——共识算法
- 查尔斯·泰勒 关于人权非强制性共识的条件
- 浅谈区块链共识机制与分布式一致性算法
- 区块链核心技术:拜占庭共识算法之PBFT
- 3.从分布式一致性到共识算法(一)
- 区块链核心技术:拜占庭共识算法之PBFT全面理解
- 区块链目前的几大共识算法
- 数字货币开发共识机制与分布式一致性算法
- 《Nodejs开发加密货币》之二十四:DPOS机制(分布式共识算法)
- [区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得
- 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述
- 【万云独家译文】DPOS共识算法——缺失的白皮书
- maven学习笔记1--简介
- 2017.11.29 python学习笔记
- 如何让idea文件夹目录结构清晰一些
- centos7 关闭防火墙
- 2017hdu新生赛 1002身份证验证
- 关于共识算法
- 链表、队列、栈的相关应用(一)链表的回文结构
- 数据库语句记录
- [bzoj 2190--SDOI2008]仪仗队
- 中文分词
- spring -squartz 定时任务
- CVPR2017有哪些值得读的Image Caption论文?
- Centos6安装Caffe
- 静态变量、局部变量、实例变量