分布式协议与算法
文章平均质量分 79
分布式协议与算法
邋遢的流浪剑客
成长中的基础架构攻城狮
展开
-
一致性哈希算法详解
1、使用哈希算法有什么问题?假设有一个由A、B、C三个节点组成的KV服务,每个节点存放不同的KV数据。通过哈希算法,每个key都可以寻址到对应的服务器,比如,查询key是key-01,计算公式为hash(key-01)%3,经过计算寻址到了编号为1的服务器节点A 但如果服务器数量发生变化,基于新的服务器数量来执行哈希算法的时候,就会出现路由寻址失败的情况,Proxy无法找到之前寻址到的那个服务器节点假如3个节点不能满足业务需求了,这时增加了一个节点,节点的数量从3变化为4,那么之前的hash(key原创 2021-06-13 10:33:31 · 9853 阅读 · 3 评论 -
Paxos算法详解
兰伯特提出的Paxos算法包括2个部分:一个是Basic Paxos算法,描述的是多节点之间如何就某个值(提案value)达成共识另一个是Multi-Paxos思想,描述的是执行多个Basic Paxos实例,就一系列值达成共识1、Basic Paxos一个分布式集群由节点A、B、C组成,提供只读KV存储服务。创建只读变量的时候,必须要对它进行赋值,而且这个值后续没办法修改。因此一个节点创建只读变量后就不能再修改它了,所以所有节点必须要先对只读变量的值达成共识,然后所有节点再一起创建这个只读变量原创 2021-06-06 22:01:28 · 1537 阅读 · 0 评论 -
拜占庭将军问题
拜占庭将军问题其实是借拜占庭将军的故事展现了分布式共识问题故事大概是这么说的:拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问原创 2021-06-06 14:48:42 · 1225 阅读 · 2 评论 -
Raft算法详解
Raft算法属于Multi-Paxos算法,它是在Multi-Paxos思想的基础上,做了一些简化和限制,比如增加了日志必须是连续的,只支持领导者、跟随者和候选人三种状态,在理解和算法实现上都相对容易许多从本质上说,Raft算法是通过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致1、领导者选举1)、成员身份Raft算法支持领导者(Leader)、跟随者(Follower)和候选人(Candidate)3种状态:跟随者:接收和处理来自领导者的消息,当等待领导者心跳信息超时的时候,就主原创 2021-05-30 20:12:21 · 20116 阅读 · 3 评论 -
ZAB协议详解
ZooKeeper使用了一种称为ZooKeeper Atomic Broadcast(ZAB,ZooKeeper原子消息广播协议)的协议作为其数据一致性的核心算法,ZAB协议是为分布式协调服务ZooKeeper专门设计的一种能保证操作顺序性的、基于主备模式的原子广播协议1、ZAB中的三个角色ZAB支持3种成员身份(领导者、跟随者、观察者)领导者(Leader):作为主节点,在同一时间集群只会有一个领导者。所有的写请求都必须在领导者节点上执行跟随者(Follower):作为备份节点,集群可以有多个跟原创 2021-05-29 10:34:17 · 1449 阅读 · 0 评论