谈下分布式算法

不谈下分布式算法,自己会忘记是(这种大白话都是自己的总结)

paxos算法,为了解决分布式副本状态不一致问题,常见的情景是,多个客户端对数据增删改查,由于有不同副本,而且网络的不确定因素,要确保多个客户端对不同副本提交修改,但是不同副本能够见到相同的命令序列,有必要对每一个提交的命令进行一致性算法来提交。

下面说下具体步骤

paxos算法3个角色

proposer:提议者,帮client整理需求,想acceptor提出建议

acceptor:决定了是否采纳建议。

leaner:统计acceptor的是否过半同意决策,如果过半确定最终采纳决策

阶段一:prepare

    proposer 向所有的acceptor发同一个带时间戳(也可作为全局id(具体9有蛮多算法,snowflake也有介绍))的prepare 的建议,

    acceptor 看到了prepare建议,首先看是不是最新的建议,如果是,好,他肯定回复:然后判断,再之前是否批准了别的建议,如果批准了,把批准的最近一次的回复的决议具体内容返回,如果没有就不发送。

   proposer 收到了对prepare的回复。超过半数,ok,表示有戏,看看 返回的半数里面是否有已经批准的回复,如果有,选出里面最近一次的决议,作为自己的决议,+prepare的时间戳,继续发送给acceptor,否则按自己心意来写决议。如果没有超过半数,好这次悲剧了,继续准备下次轮回

   acceptor接受到决议,首先看看是否有accept比这个更晚的,如果有拒绝,确实是最新的 ,好accept ,然后 告诉leaner,

   leanner  统计下是否超过半数的acceptor accept某一个时间的提议,如果超过半数,好确定下来了,然后让所有leaner去学习



你可能感兴趣的:(谈下分布式算法)