拜占庭共识算法

先简单的说明下拜占庭问题:

        拜占庭将军问题(Byzantine Generals Problem),是由莱斯利·兰波特在其同名论文[1]中提出的分布式对等网络通信容错问题。维基百科

        拜占庭将军们为了围攻一座城池,他们之间只能通过投票与信使的方式决定是同时“进攻”或“撤离”的方案。既时将军中有“叛徒将军”或者“被杀害的信使”,何如依然保证目标(决策:同时进攻或者撤离)的一致性?

        将军们用这种方式决策,展示了分布式计算中资源的独立性,仅能通过网络进行通信。众所周知网络是不可靠的(数据丢失或者错误的数据)。


拜占庭算法(Practical Byzantine Fault Tolerance,PBFT)问题的数学逻辑:

        量值定义:

        V:投票数(物理节点数)

        R:最小成功读(查)的物理节点数

        W:最小成功写(增,删,改)的物理节点数

        满足以下原则:

  1. 同一数据不能同时进行读写操作:R>V-W & W>V-R
  2. 同一数据不能同时写操作(写串行性): W>V/2

综上,解不等式可得:R+W>V且W>V/2

     3.读写节点平衡原则:即:R=W=Q

所以上述R+W>V且W>V/2----->变为:Q>V/2


我们知道网络是不可靠的,所以加入物理节点宕机因子f(宕机节点数)。

定义:n:集群中物理总节点数,那么n,f,Q之间的关系又是怎样呢?


CFT(Crash Fault Tolerance)算法:保证集群系统中的活性与所有节点间的数据一致性

满足活性:Q<=n-f 及上述的不等式Q>V/2即:Q>n/2 ,综合得:n>2f


BFT(Byzantine Fault Tolerance)算法:保证集群系统中的活性与可靠节点间数据一致性

满足可靠节点间容错性的情况下:上述的不等式R+W>V且W>V/2,即:(Q-f)+(Q-f)>n-f且(Q-f)>(n-f)/2,进一步变换得:Q>(n+f)/2

满足活性:Q<=n-f

BFT算法下综合得:n>3f

所以:在CFT算法下,能够容忍的宕机节点数最多为f<n/2;

           BFT算法下,能够容忍的宕机节点数最多为f<n/3;

上述描述的就是Quorum机制,zookeeper中就使用到了这种机制。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值