一.背景
在分布式中,最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题,涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布式通信协议。
二.简单即有效——totem协议
totem协议也许你还比较陌生,但是corosync就是totem协议的一个开源实现。比较火的HA软件pacemaker就是基于corosync来提供各种服务的。说起totem协议,最简单的形象就是,他将多个节点组成一个令牌环。多个节点手拉手形成一个圈,大家依次的传递token。只有获取到token的节点才有发送消息的权利。简单有效的解决了在分布式系统中各个节点的同步问题,因为只有一个节点会在一个时刻发送消息,不会出现冲突。当然,如果有节点发生意外时,令牌环就会断掉,此时大家不能够通信,而是重新组建出一个新的令牌环。
三.进化的二段提交——paxos协议
说起paxos,需要稍微提提二段提交。简单来说,二阶段提交就是:
1.一个节点询问其他节点,我是不是可以进行消息提交。
2.如果收到所有人的同意,则告诉大家,开始提交吧。这个协议在实际中并不能很好的解决分布式中信息同步问题。例如只要有节点失效,就会发生得不到所有人同意的结果,在超时后,这一次提交失败,等一系列问题。但是paxos在对二段提交进行了优化后,得到了一个比较好的解决办法。
paxos协议引入了多数派,以及消息编号的概念。在1准备时,询问2/n+1的参与者,要求他们保证不会接受小于编号n的提交。如果得到了2/n+1的回复,则可以开始告诉2/n+1的参与者进行消息的提交。
可以明显的看出,这就是对二段提交的一个优化版。就是这么一个比较巧妙的思想,解决了一些二阶段提交带来的问题。
顺便说一句,这个协议的作者Leslie Lamport。他刚刚获得2013年图灵奖。
四.奇思妙想——gossip协议
gossip协议是一个神奇的协议。它常用于P2P的通信协议,这个协议就是模拟人类中传播谣言的行为而来。简单的描述下这个协议,首先要传播谣言就要有种子节点。种子节点每秒都会随机向其他节点发送自己所拥有的节点列表,以及需要传播的消息。任何新加入的节点,就在这种传播方式下很快地被全网所知道。这个协议的神奇就在于它从设计开始就没想到信息一定要传递给所有的节点,但是随着时间的增长,在最终的某一时刻,全网会得到相同的信息。当然这个时刻可能仅仅存在于理论,永远不可达。
五.基础协议的对比
简单的介绍了这几种协议,下面我们来看看他们的对比:
六.参考资料
totem协议:http://blog.csdn.net/zuokong/article/details/7548152
paxos协议:http://en.wikipedia.org/wiki/Paxos_algorithm
gossip协议:http://en.wikipedia.org/wiki/Gossip_protocol
文章来源:http://blog.csdn.net/cxzhq2002/article/details/49563811
相关推荐
《Paxos Made Simple》分布式一致性协议Paxos论文翻译
它基于Paxos协议和分布式架构,实现了高可用性和线性扩展。OceanBase数据库可以运行在常见的服务器集群上,不依赖特殊的硬件架构。该项目旨在提供可靠的关系型数据库解决方案,适用于企业级应用。
可靠分布式系统基础-paxos的直观解释
图解分布式一致性协议Paxos, 从 slideshare 上搬运过来的,非常不错的讲解,适合对 paxos 感兴趣的开发人员
介绍分布式理论的文档:Paxos/Raft 分布式一致性算法原理 剖析及其在实战中的应用
paxos-分布式一致性协议.pdf 知行学社 PPT
分布式服务协议Paxos原理、应用场景
ZooKeeper-分布式过程协同技术详解 和 从Paxos到Zookeeper 分布式一致性原理与实践 电子书。喜欢请支持种作者。购买纸质版
从Paxos到Zookeeper分布式一致性原理与实践 + ZooKeeper-分布式过程协同技术详解
ZAB协议,作为Paxos算法的简化实现,不仅支持崩溃恢复,也实现了原子广播,从而保障了分布式系统中数据的一致性和稳定性。通过分析ZAB协议的两大核心功能:消息广播和崩溃恢复,本文揭示了Zookeeper在处理集群数据...
Lamport Paxos 的这两篇论文真的很难懂,小编也是竭尽全力的推敲每一句话的意思,尽量的将Lamport的意思完整的呈现出来。希望大家支持一下。两篇论文大概码了3万多字,每一个公式都是手敲的… 为什么会研究Paxos?...
从Paxos到Zookeeper:分布式一致性原理与实践,适合分布式系统各阶段学习,并对分布式架构有深入的理解与提高
《Paxos到Zookeeper:分布式一致性原理与实践》从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式...
awesome-consensus:Paxos和朋友的很棒列表
Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,其解决的问题就是在分布式系统中如何就某个值(决议)达成一致。...
从PAXOS到ZOOKEEPER分布式一致性原理与实践从PAXOS到ZOOKEEPER分布式一致性原理与实践从PAXOS到ZOOKEEPER分布式一致性原理与实践
本书从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议。同时,本书深入介绍了分布式一致性问题的工业解决方案——ZooKeeper,...
Paxos Made Easy: The Geometric Meaning and Geometric Proof of Paxos AlgorithmPaxos Made Easy: Paxos算法的几何意义与证明Note: The English version of this article still needs to take some more time to ...