一种基于距离的状态同步方法

文档序号:7897555阅读:469来源:国知局
专利名称:一种基于距离的状态同步方法
技术领域
本发明涉及一种分布式系统,尤其涉及一种分布式系统中状态同步消息的分发方法。
背景技术
在一类基于对等系统的0跳Uero Hop)分布式系统中,每个节点需要知道整个集 群中所有节点的状态,一般采用以下步骤1.当一个节点加入集群时,发送一个多播(multicast)或者广播(broadcast)消息;2.集群中所有节点接受并更新自己的成员视图;3.选择一个种子节点,并请求该种子节点将其成员视图传递给新加入的节点;4.每个节点对所有其他节点维持心跳(heartbeat),相互交换成员视图,如果判断某节 点死亡,则将其从成员视图中删除。
这种简单的做法可以实现少量节点间的状态同步,但是当集群中节点数目达到几 百甚至更多,每个节点都需要维护大量的心跳(heartbeat)连接,定时发送大量的心跳消 息。整个集群中心跳消息数量在0(ιΓ2)级别,网络开销巨大,几乎没有可行性。如果节点 间采用Gossip协议进行,定时随机选择若干节点进行通信,发送心跳消息,交换并更新各 自维护的节点的状态信息;经过一定的时间后,最终集群中所有节点都有最新一致的节点 状态信息。这种方法保证了各节点之间数据的最终一致性,而且占用很少的网络带宽。
Gossip是一种分布式协议,通过Gossip协议分发节点状态消息来进行分布式 系统中节点之间的状态同步,是构造对等系统或重叠网络等拓扑形式的分布式系统时 经常采用的方法。Gossip协议在实践中已被证明特别适合在节点规模较大的分布式系 统中使用,进行消息分发及状态交换,以达到节点状态及数据的最终一致性(Eventual Consistency),从而达到系统节点间状态同步的目的。
一般的Gossip协议实现,一个节点在选取若干节点并向其发送同步消息时,通常 是从其所维护的一个节点列表中随机地选取一些节点,发送状态同步消息,进行状态同步。
但是这种Gossip协议实现随机选择节点通信的方法,并没有考虑到集群的拓扑 结构,如同一机架和不同机架,同一数据中心和不同数据中心等。图2为一种数据中心的拓 扑结构示意图,如图2所示,每个数据中心包括若干个集群203,每个集群203包含若干个 服务器机架202,每个服务器机架202还包含若干个服务器节点201。在这种集群拓扑结构 中,一般采用交换机互联构建网络结构。不同服务器机架的两个节点间的带宽一般比同机 架内的两个节点的带宽紧张,跨数据中心的两个节点间的带宽就更紧张了,而且随着节点 间所跨交换机和逻辑距离越来越远,消息传递需要的时间也可能越长,使得系统消息同步 收敛的速度很慢,效率较低。发明内容
为了解决现有实现中存在的不足,本发明的目的在于提供一种基于距离的状态同步消息分发方法,在分布式系统的各个节点之间进行消息交换,提高系统节点状态一致性 的收敛速度。
为实现上述目的,本发明提供了一种基于距离的状态同步方法,该方法包括以下 步骤1)构建网络或集群中某一节点的种子节点,并维护活节点列表和死节点列表;2)在活节点列表中,根据各节点在网络中的拓扑位置,赋予各节点不同的距离参数,并 以与距离的平方成反比的概率,选择不同距离的节点,发送同步消息;3)随机向不可达节点发送同步消息;4)被选择的节点不包含种子节点,则随机向一个种子节点发送同步消息;5)如活节点列表中的节点数少于种子节点数,随机向一个种子节点发送同步消息。
其中,所述步骤1)构建网络或集群中某一节点的种子节点是将所述网络或集群中 所有节点的种子节点构建成二叉树的形式。
其中,所述步骤2)中根据在网络中的拓扑位置,赋予节点不同的距离参数的步骤 进一步包括判断节点所处的机架位置和数据中心的位置;根据位置赋予节点距离参数。
其中,所述判断节点所处的机架位置和数据中心的位置包括根据系统配置判断、 根据网络规划时设定的IP地址规则判断或根据动态统计判断。
其中,所述根据位置赋予节点距离参数是依据网络拓扑的具体形式赋值,同机架 的节点距离参数为1,不同机架但相同数据中心的节点距离参数为2,不同数据中心的节点 距离参数为3。
本发明通过考虑节点在分布式系统网络中的拓扑位置(如机架、数据中心等)信 息,赋予节点间距离参数,并以与距离的平方成反比的概率,选取不同距离的节点,发送同 步消息,进行状态同步。这种基于距离的Gossip消息分发同步状态数据的机制,能够加快 系统状态一致性的收敛速度,提高通讯效率,降低网络带宽和系统负荷的开销。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的 实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中图1为根据本发明的基于距离的状态同步方法流程图; 图2为一种数据中心的拓扑结构示意图; 图3为根据本发明构建的种子节点关系示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实 施例仅用于说明和解释本发明,并不用于限定本发明。
本发明的核心内容主要是在使用Gossip协议进行同步时,需要根据距离来选择 同步节点。
基于距离选择同步节点的规则是系统或集群中的某节点,对处于不同网络位置4的其他节点,赋予不同的距离参数,节点被选择的概率与节点距离参数的平方成反比。
图1为根据本发明的基于距离的状态同步方法流程图,下面将参考图1,对本发明 的基于距离的状态同步方法进行详细描述首先,在步骤101,在使用Gossip协议构建对等系统或重叠网络时,一个节点新加入 到集群中时,向一个或多个节点发送第一次消息同步,我们称这些节点为种子节点(Seed Node),同时,每个节点维护两个节点列表一个是当前活节点列表即可达节点列表,另外一 个是当前死节点列表即不可达节点列表。
图3为根据本发明构建的种子节点关系示意图,如图3所示,我们可以把种子节点 的关系构建成一棵二叉树的形式,每个父节点是其子节点的种子节点,节点A是节点B和C 的种子节点,节点B是节点D和E的种子节点。每个节点在配置种子节点时,除了按照二叉 树的形式来指定种子节点外,还可以指定其他的种子节点。
在步骤102,系统或集群中的某节点,对处于不同网络位置的可达列表中的节点, 赋予不同的节点距离参数,例如可以设同机架的节点距离参数为1,不同机架但相同数据中 心的节点距离参数为2,不同数据中心的节点距离参数为3等。判断节点是否处于同一机 架,或同一个数据中心,或不同数据中心的方法有多种,例如,可以根据系统配置判断,也可 以根据网络规划时设定的IP地址规则判断,还可以根据动态统计判断等等。节点间的距离 参数,也可以依据对网络拓扑的具体情形,灵活地赋值,其原则是距离越远,距离参数越大。
在步骤103,在当前活节点列表(可达节点列表)中根据节点被选择的概率与节点距离 参数的平方成反比的规则,选择发送同步消息的目标节点,并进行状态同步,同机架的节点 被选择的概率最高,不同数据中心的节点被选择的概率最低,优先让同机架的节点之间进 行同步。实际计算时,不同距离的节点数,可以进行相应的化整处理,例如小于1的节点数, 视为为1等。
在步骤104,随机向一些不可达的节点发送同步消息,尝试进行消息同步。在分布 式环境下,由于网络变的不可靠,可能出现节点短暂的不可达,该步骤的目的是为了尽早发 现不可达的节点重新可达。
在步骤105,判断步骤103所选择的节点是否为种子节点,如果是种子节点,转到 步骤107处理;如果不是种子节点,则转到下一步骤。
在步骤106,随机向一个种子节点发送同步消息,进行同步。在步骤102中所选择 的节点可能不包含种子节点,在这种情况下,则以一定的概率随机向一个种子节点发送同 步消息,并进行同步。因为种子节点总有比较多的节点状态信息,该步骤可以加快同步的速度。
在步骤107,判断当前活节点列表中的节点数是否小于种子节点数,如果小于种子 节点,则进行下一步骤;如果不小于种子节点数,转到步骤109结束本次状态同步。
在步骤108,随机向一个种子节点发送同步消息,并进行状态同步。如果当前活的 节点数少于种子节点数,以一定概率随机向一个种子节点发送同步请求的目的是为了避免 “孤岛”的出现。
如果不进行上述步骤107和步骤108,很容易出现“孤岛”,例如假设有4台机器, 分别为A,B, C,D,并且配置了它们都是种子节点,即A,B, C,D的种子节点都包含这4台机器。如果它们同时启动,可能会出现这样的情形a)A节点起来,发现没有活着的节点,走到步骤106,和任意一个种子节点同步,假设选 择了 B;b)B节点和A完成同步,则认为A活着,它将和A同步,由于A是B的种子节点,B将不 再和其他种子节点同步;c)C节点起来,发现没有活着的节点,同样走到步骤106,和任意一个种子节点同步,假 设这次选择了 D ;d)D节点和C完成同步,认为C活着,则它将和C同步,由于C是D的种子节点,所以D 也不再和其他种子节点同步。
这时就形成了两个孤岛,A和B互相同步,C和D之间互相同步,但是{A,B}和{C,D} 之间将不再互相同步,它们也就不知道对方的存在了。加入步骤107和步骤108后,A和B 同步完成,发现只有一个节点活着,但是种子节点有4个,这时会再和其他任意一个种子节 点通信,从而打破这个孤岛。
本发明能够让同机架的节点之间快速的进行同步,减少跨机架,跨数据中心的通 讯次数,占用更小的网络带宽,使跨机架,跨数据中心的节点之间在进行同步时,具有本机 架或本数据中心最新的更完整的数据,加快整个集群网络状态一致性收敛的速度。
另外,合理构建种子节点,也能在此基础上更加加快收敛的速度。节点每次进行同 步时,都以一定概率(与种子节点进行消息同步,因为种子节点理论上具有最多节点的状态 信息。而且所有节点通过种子节点,形成了一种关联关系,与随机选择形成了一定的互补。
凡是基于P2P的分布式系统中,利用Gossip或其他协议进行状态同步、信息交换, 或邻居节点选择时,都可以用到本发明。本发明包含但不限于下面的两种使用情况。
1. P2P视频分享基于P2P的流媒体直播中,每个节点与附近的节点之间共享媒体数据,节点之间需要 定期的更新各自的状态。利用本发明,通过动态统计,将距离本节点较近的一些节点,归于 在“同一个机架”中。在选择节点进行状态同步时,能够选择距离自己较近的这些节点进行 更新,然后根据数据调度算法,选择合适的“邻居”,请求得到相应的数据。不会出现由于随 机选择,将两个距离很远、链接质量很差的节点调度成为内容共享,大大影响系统的服务质 量。
2. VoIP通讯里的消息交互基于IP网络的语音通信(VoIP)是一种全新的网络电话通信业务,它和传统的PSTN电 话业务相比有着扩展性好、部署方便、价格低廉等明显的优点。在全球范围内的VoIP应用 中,由于通讯各方可能处于不同的网络状况下,采用本发明,将执行话音包中转的服务器的 状态信息,在整个网络中进行快速的传播,然后动态自适应地根据通讯双方网络进行链路 通知及消息转发,提供更高质量的服务。
本领域普通技术人员可以理解以上所述仅为本发明的优选实施例而已,并不用 于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员 来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进 行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含 在本发明的保护范围之内。
权利要求
1.一种基于距离的状态同步方法,该方法包括以下步骤1)构建网络或集群中某一节点的种子节点,并维护活节点列表和死节点列表;2)在活节点列表中,根据在网络中的位置,赋予各节点不同的距离参数,并以与距离的 平方成反比的概率,选择不同距离的节点,发送同步消息;3)随机向不可达节点发送同步消息;4)如被选择的节点不包含种子节点,随机向一个种子节点发送同步消息;5)如活节点列表中的节点数少于种子节点数,随机向一个种子节点发送同步消息。
2.根据权利要求1所述的基于距离的状态同步方法,其特征在于,所述步骤1)构建网 络或集群中某一节点的种子节点是将所有节点的种子节点构成的拓扑结构为二叉树形式。
3.根据权利要求1所述的基于距离的状态同步方法,其特征在于,所述步骤2)中根据 在网络中的位置,赋予各节点不同的距离参数的步骤进一步包括判断节点所处的机架位 置和数据中心的位置;根据位置赋予节点距离参数。
4.根据权利要求3所述的基于距离的状态同步方法,其特征在于,所述判断节点所处 的机架位置和数据中心的位置包括根据系统配置判断、根据网络规划时设定的IP地址规 则判断或根据动态统计判断。
5.根据权利要求3所述的基于距离的状态同步方法,其特征在于,所述根据位置赋予 节点距离参数是依据网络拓扑的具体形式赋值;同机架的节点距离参数为1,不同机架但 相同数据中心的节点距离参数为2,不同数据中心的节点距离参数为3。
全文摘要
一种基于距离的状态同步方法,该方法包括以下步骤构建网络或集群中某一节点的种子节点,并维护活节点列表和死节点列表;在活节点列表中,根据在网络中的位置,赋予各节点不同的距离参数,并以与距离的平方成反比的概率,选择不同距离的节点,发送同步消息;以一定概率随机向不可达节点发送同步消息;如被选择的节点不包含种子节点,以一定概率随机向一个种子节点发送同步消息;如活节点列表中的节点数少于种子节点数,以一定概率随机向一个种子节点发送同步消息,进行状态同步。本发明基于距离的状态同步方法,能够加快系统状态一致收敛的速度,提高通讯的效率,降低对带宽和系统的开销。
文档编号H04L29/08GK102035894SQ20101061067
公开日2011年4月27日 申请日期2010年12月29日 优先权日2010年12月29日
发明者刘为怀, 张元丰, 张卫平, 张松波, 杨立辉, 饶春平 申请人:北京播思软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1