🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[info] 分布式通信协议 分布式中,最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题,涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布 式通信协议。 ***** * **paxos协议:** 说起paxos,需要稍微提提二段提交。简单来说,二阶段提交就是,一个节点询问其他节点,我是不是 可以进行消息提交。如果收到所有人的同意,则告诉大家,开始提交吧。 ***** 这个协议在实际中并不能很好的解决分布式中信息同步问题。例如只要有节点失效,就会发生得不到所 有人同意的结果,在超时后,这一次提交失败,等一系列问题。但是paxos在对二段提交进行了优化 后,得到了一个比较好的解决办法。 ***** paxos协议引入了多数派,以及消息编号的概念。在1准备时,询问2/n+1的参与者,要求他们保证不会 接受小于编号n的提交。如果得到了2/n+1的回复,则可以开始告诉2/n+1的参与者进行消息的提交。 ***** 可以明显的看出,这就是对二段提交的一个优化版。就是这么一个比较巧妙的思想,解决了一些二阶段提交带来的问题 ***** * **Raft 协议** 发现主节点失踪一段时间后,所有从节点向其它从节点发消息,让他们选自己为新的主节点; ***** 还没参加选举的节点如果收到其他节点的选举请求,就选举自己收到的第一个节点,后面谁再请求自己 支持选举,就告诉他们我已经支持另一个节点了; ***** 如果一个节点发现另一个节点得到的支持比自己多,也就开始无条件支持那个节点选举,同时让支持自 己的节点也去支持它 ***** 如果一轮没选出来得到大多数节点支持的主节点,就开始下一轮选举,直到一个节点得到了大部分节点 支持,成为新的主节点。 ***** * **gossip协议:** gossip协议是一个神奇的协议。它常用于P2P的通信协议,这个协议就是模拟人类中传播谣言的行为而 来。 ***** 首先要传播谣言就要有种子节点。种子节点每秒都会随机向其他节点发送自己所拥有的节点列表,以及 需要传播的消息。任何新加入的节点,就在这种传播方式下很快地被全网所知道。 ***** 这个协议的神奇就在于它从设计开始就没想到信息一定要传递给所有的节点,但是随着时间的增长,在 最终的某一时刻,全网会得到相同的信息。当然这个时刻可能仅仅存在于理论,永远不可达。