分布式协议与算法
文章平均质量分 83
拜占庭,paxos,raft,zab,一致性hash等
搬砖使我快乐!
热爱技术,热爱生活.
展开
-
[分布式协议]CAP的理解 五分钟深入理解
首先cap有两版,第一版是大家面试时候经常说的,第二版我觉得才是最准确的.参考首先cap是针对的数据读写,不是所有功能,例如zk的选举.zk的数据复制都不是.一致性.第一版:All nodes see the same data at the same time.所有节点在同一时刻都能看到相同的数据.第二版:A read is guaranteed to return the most recent write for a given client.对某个指定的客户端来说,读操原创 2021-01-13 19:48:24 · 835 阅读 · 0 评论 -
[etcd]raft总结/选举/数据同步,协议缺陷与解决/Multi Raft
raft协议是multi paxos协议的实现.Etcd、Consu都使用了raft1.角色raft协议中包含这几种角色领导者:带头大哥1.提出提议,但是不需要确认,因为我是大哥;2.复制日志,数据以大哥为准,3,领导者会定时发送心跳,确定自己的位置.告诉小弟老实呆着,一旦心跳超时,小弟就会重新选举大哥.跟随者:只要大哥发送心跳,我就老实的同步日志.一旦没有心跳,我就变成候选人,开始发起投票,争取做大哥候选人:心跳超时后,变成候选人,这是个中间状态.选举时机:1.心跳超时后,变成原创 2020-11-22 23:03:31 · 2828 阅读 · 0 评论 -
zab选举
1.选举每个节点都有一个投票池,以3个节点为例,A(事务id=1),B(事务id=2),C(事务id=1)1.刚开始每人投票给自己,此时三个节点的投票池都是各自投自己.2.三个把投票都投给其余两人.例如A把票投给BC,B收到后,比较事务id,自己大,不用改票,但是记录下A投A;同理C也是3.B把票投个AC.AC收到票后,比较自身,都改票了.4.AC把改票信息再次群发.最终这个投票箱肯定都是投给B的raft选举和zab选举的区别1.raft选举 每个节点只能投...原创 2020-11-22 21:55:58 · 433 阅读 · 0 评论 -
basic paxos,multi paxos
basic paxos:集群内所有节点如何就一个值达成共识角色:1.提议者:提出提议(proposal).2.接受者:对于提议要给出自己的回答.3.学习者:接受达成共识的值,不参与投票和提议.注意1.除了学习者节点.每个节点都可以生成提议(proposal)和接受提议2.共识的达成需要两阶段协议3.不需要所有节点同意,过半同意即可.流程:1.提议一般是节点生成的.生成的提议可有使用p(id,value).其中id是提议编号.2.一个节点生成提议后...原创 2020-11-22 21:46:00 · 488 阅读 · 0 评论 -
拜占庭将军
1.问题-二忠一叛例子:齐楚燕去商议攻打秦国,怎么达成一致的消息.拜占庭问题点在于,消息不一定是可靠的,如果不可靠,如下图,齐国和燕国一个说攻,一个说退.楚如果是叛徒,对燕说攻,对齐说退,那么燕肯定完蛋了.拜占庭存在的问题2.如何解决2.1口信消息型如果叛将人数为 m,将军人数不能少于 3m + 1 ,那么拜占庭将军问题就能解决2.2 签名消息型对消息进行签名,既然消息有可能是假的,那么就去对假消息进行验证3.总结拜占庭将军问题非常复杂,一般在内部系统中,不会..原创 2020-11-22 15:35:18 · 244 阅读 · 0 评论
分享