一.背景
在分布式中,最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题,涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布式通信协议。
二.简单即有效——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协议与其他分布式系统中的提交协议之间的区别和联系,特别是与两阶段提交等经典协议的区别。 #### 七、总结 - 本文通过对 Leslie Lamport 的论文进行翻译和解释,深入探讨了Paxos协议的关键概念和...
分布式系统是计算机科学中的一个重要领域,它涉及到多个独立计算实体通过网络进行通信和协作,以完成共同的任务。《Distributed Systems: Concepts and Design》是由George Coulouris、Jean Dollimore、Tim Kindberg...
总之,Paxos协议是分布式系统中解决一致性问题的重要工具,它的原理和应用对于理解和构建可靠的分布式服务至关重要。在Java开发中,掌握Paxos原理可以帮助我们设计出更加健壮、高可用的分布式应用程序。
分布式一致性协议Paxos是一种解决分布式系统中一致性问题的算法,由莱斯利·兰伯特(Leslie Lamport)提出,主要用于保证在一个分布式系统中,尽管有部分节点出现故障,系统仍然能够达成一致性的决策。Paxos算法的...
### 可靠分布式系统基础-paxos的直观解释 #### 背景 在构建可靠的分布式系统时,面临着一个核心挑战:如何确保多个节点能够就某一状态达成一致。这一问题至关重要,因为它直接关系到系统的稳定性和可靠性。为了...
5. 数据分布与一致性:包括Gossip协议、Chubby锁服务等实现分布式一致性的方式。 另一方面,《分布式服务框架原理与实践》聚焦于服务间的通信与协调,这在微服务架构中尤为重要。书中的内容可能涵盖: 1. 服务发现...
paxos-分布式一致性协议.pdf 知行学社 PPT
3. 分布式一致性协议:如Paxos、Raft、Zookeeper的ZAB协议,用于保证系统中数据的一致性。 4. 分布式消息队列:如RabbitMQ、Kafka,用于异步通信和解耦组件。 5. 微服务架构:将大型应用程序分解为小型、独立的服务...
2. **Java网络编程**:Java提供丰富的网络编程API,如Socket、ServerSocket、NIO和Netty框架,这些都是实现分布式服务间通信的基础。读者将学习如何使用这些API进行高效的网络通信。 3. **远程过程调用(RPC)**:...
1. 分布式系统与Paxos算法:分布式系统由多个分布在网络中的节点组成,它们通过通信和协调共同完成某项任务。在分布式系统中,一致性问题非常重要,因为需要确保数据在不同节点间保持同步,即使在节点故障、网络分区...
Paxos算法的复杂性和理解难度较高,但其设计理念对后来的分布式一致性协议产生了深远影响。 接着,ZooKeeper是Apache软件基金会的一个开源项目,它为分布式应用程序提供了一个高度可靠的分布式协调服务。ZooKeeper...
分布式Java应用:基础与实践 在当今的互联网时代,分布式系统已经成为企业级应用程序开发的...《分布式java应用:基础与实践》这本书正是为此目的而编写,旨在为Java开发者提供全面的分布式系统理论知识和实践经验。
总的来说,《ZooKeeper:分布式过程协同技术详解》和《从Paxos到Zookeeper:分布式一致性原理与实践》两本书提供了深入理解ZooKeeper和分布式一致性理论的全面资源。无论是理论探讨还是实战指南,它们都为读者提供了...
4. **网络通信(Network Communication)**:节点间的通信协议,如Gossip协议用于节点间信息的传播,或者RMA(Remote Memory Access)用于高效的数据传输。 5. **一致性协议(Consistency Protocol)**:如前面提到...
7. **分布式算法**:包括选举算法(如Paxos、Raft)、分布式一致性算法(如Gossip协议)等,它们是解决分布式问题的基础。 8. **数据分片**:大规模数据存储时,通常会将数据分割成多个部分存储在不同节点上,以...
《Paxos到Zookeeper——分布式一致性原理与实践》是一本深入探讨分布式一致性问题的书籍,对于理解并应用Zookeeper这一关键的分布式协调系统具有重要价值。本书旨在帮助读者掌握分布式环境中的数据一致性原理,并...