制作营销网站公司英才网
news/
2025/9/24 1:54:23/
文章来源:
制作营销网站公司,英才网,国内精品网站建设,创业网站建设背景#xff1a; 在分布式中#xff0c;最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题#xff0c;涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布式通信协议。 简单即有效——totem协议:… 背景 在分布式中最难解决的一个问题就是多个节点间数据同步问题。为了解决这样的问题涌现出了各种奇思妙想。只有在解决了如何进行信息同步的基础之上才衍生出形形色色的应用。这里开始介绍几种分布式通信协议。 简单即有效——totem协议: totem协议也许你还比较陌生但是corosync就是totem协议的一个开源实现。比较火的HA软件pacemaker就是基于corosync来提供各种服务的。说起totem协议最简单的形象就是他将多个节点组成一个令牌环。多个节点手拉手形成一个圈大家依次的传递token。只有获取到token的节点才有发送消息的权利。简单有效的解决了在分布式系统中各个节点的同步问题因为只有一个节点会在一个时刻发送消息不会出现冲突。当然如果有节点发生意外时令牌环就会断掉此时大家不能够通信而是重新组建出一个新的令牌环。 进化的二段提交——paxos协议 说起paxos需要稍微提提二段提交。简单来说二阶段提交就是1.一个节点询问其他节点我是不是可以进行消息提交。2.如果收到所有人的同意则告诉大家开始提交吧。这个协议在实际中并不能很好的解决分布式中信息同步问题。例如只要有节点失效就会发生得不到所有人同意的结果在超时后这一次提交失败等一系列问题。但是paxos在对二段提交进行了优化后得到了一个比较好的解决办法。 paxos协议引入了多数派以及消息编号的概念。在1准备时询问2/n1的参与者要求他们保证不会接受小于编号n的提交。 2.如果得到了2/n1的回复则可以开始告诉2/n1的参与者进行消息的提交。 可以明显的看出这就是对二段提交的一个优化版。就是这么一个比较巧妙的思想解决了一些二阶段提交带来的问题。 顺便说一句这个协议的作者Leslie Lamport。他刚刚获得2013年图灵奖。 奇思妙想——gossip协议 gossip协议是一个神奇的协议。它常用于P2P的通信协议这个协议就是模拟人类中传播谣言的行为而来。简单的描述下这个协议首先要传播谣言就要有种子节点。种子节点每秒都会随机向其他节点发送自己所拥有的节点列表以及需要传播的消息。任何新加入的节点就在这种传播方式下很快地被全网所知道。这个协议的神奇就在于它从设计开始就没想到信息一定要传递给所有的节点但是随着时间的增长在最终的某一时刻全网会得到相同的信息。当然这个时刻可能仅仅存在于理论永远不可达。 基础协议的对比 简单的介绍了这几种协议下面我们来看看他们的对比 基础协议paxostotemgossip数据同步第一阶段 proposer 选择一个提案编号 n 并将 prepare 请求发送给acceptors 中的一个多数派acceptor 收到 prepare 消息后如果提案的编号大于它已经回复的所有 prepare 消息则 acceptor 将自己上次的批准回复给 proposer并承诺不再批准小于 n 的提案。第二阶段当一个 proposor 收到了多数 acceptors 对 prepare 的回复后就进入批准阶段。它要向回复 prepare 请求的acceptors 发送 accept 请求包括编号 n 和根据 P2c 决定的 value如果根据 P2c 没有决定 value那么它可以自由决定 value。在不违背自己向其他 proposer 的承诺的前提下acceptor 收到 accept 请求后即批准这个请求。1.通信方式。当集群有节点要发起通信时需要等待token。当拿到token后先广播这次需要发送的数据然后传递token来确认所有人都接收到消息。如果确认成功释放token。2.节点的加入和退出。当集群中有节点加入时加入的节点广播一个加入信息所有人都开始广播自己的信息当所有人都获得同伴信息开始由id最小的人提交一个token交由所有节点确认。如果都确认后则节点正式加入开始正常运行。当集群有节点退出时由于令牌环断链触发token超时则同样开始广播信息然后由最小id提交token经过确认后恢复正常。gossip协议有多种实现这里说一个例子当节点启动时读配置文件然后向一个seed发送信息进行信息同步然后开始没秒都随机选择一个seed节点来同步信息1、随机取一个当前活着的节点并向它发送同步请求2、向随机一台不可达的机器发送同步请求3、如果第一步中所选择的节点不是seed或者当前活着的节点数少于seed数则向随意一台seed发送同步请求数据一致性 强一致性强一致性最终一致性相关应用zookeepercorosyncCassandra优点可以很好的解决通信一致性问题在集群规模上比corosync要略大一些简单方便按照协议实现后就可以直接使用协议本身简单组网规模几乎不受限制通信性能好缺点理论性太强如果要实际使用还是需要进行优化使用了广播包对于跨域传送有影响而且令牌环本身带来的问题使得组网规模不大不能提供传统的数据一致性服务在传输中占用较多的网络流量 参考资料 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/cloudresearch/article/details/23127985 .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914532.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!