CN104378426B - 一种用于实时信息分发系统的负载均衡方法 - Google Patents

一种用于实时信息分发系统的负载均衡方法 Download PDF

Info

Publication number
CN104378426B
CN104378426B CN201410642893.XA CN201410642893A CN104378426B CN 104378426 B CN104378426 B CN 104378426B CN 201410642893 A CN201410642893 A CN 201410642893A CN 104378426 B CN104378426 B CN 104378426B
Authority
CN
China
Prior art keywords
node
bucket
data
pushing
barrel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410642893.XA
Other languages
English (en)
Other versions
CN104378426A (zh
Inventor
郑翔平
何炼坚
邓小龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 2 Research Institute
Original Assignee
CETC 2 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 2 Research Institute filed Critical CETC 2 Research Institute
Priority to CN201410642893.XA priority Critical patent/CN104378426B/zh
Publication of CN104378426A publication Critical patent/CN104378426A/zh
Application granted granted Critical
Publication of CN104378426B publication Critical patent/CN104378426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及网络通信技术领域,本发明公开了一种用于实时信息分发系统的负载均衡方法,其具体包括以下的步骤:步骤一、数据发布者作为源点,计算系统中订阅者节点与源点之间的距离;步骤二、将系统中的所有节点分别存放在(向上取整)个桶中,并从0开始为每个桶标注序号,第0个桶中存放发布者,第i个桶中存放与源点距离范围为的订阅者节点,其中N为系统中所有节点的总数;步骤三、数据发布者将数据推送至第1个桶中的节点,依次类推,……第i个桶中的节点,将数据推送至第i+1个桶的节点……,第‑1(向上取整)个桶中的节点将数据推送至第(向上取整)个桶中的节点。通过上述方法,订阅者帮助发布者将数据推送至下一个桶中,提高了数据传输的速率,避免出现单点传输瓶颈。

Description

一种用于实时信息分发系统的负载均衡方法
技术领域
本发明涉及网络通信技术领域,本发明公开了一种用于用于实时信息分发系统的负载均衡方法。
背景技术
目前,大型网络系统中的数据通信技术可以采用基于发布/订阅的总线技术进行,其中较为先进的是DDS(Data Distribution Service,数据分发服务),其采用全分布式架构,底层通信链路采用点对点的连接方式,无中心节点,无单点失效,一般情况下无单点瓶颈。然而,目前成熟的DDS技术在面对一种特殊场景时却体现不了上述优势。这种特殊场景如下:数据交互采用TCP协议,数据由一个数据发布者产生,很多个数据订阅者接收。在这种场景下,虽然节点间都通过点对点连接,但是数据发布者需要将一份数据通过多条链路分别分发给每个订阅者,这样使得数据发布者的理论带宽仅仅只有整个物理带宽的1/N(N为订阅者的个数)。在基于数据主题发布/订阅的总线技术中,通过TCP协议进行分布式数据分发技术方面,负载均衡这方面的研究是空白的。
发明内容
针对现有技术实时信息分发系统在数据分发过程中,遇到单点发布、多点订阅时,订阅过多带来的单点发送超出负荷的情况。本发明公开了一种用于实时信息分发系统的负载均衡方法。
本发明公开了一种用于实时信息分发系统的负载均衡方法,其具体包括以下的步骤:步骤一、主题发布者作为源点,计算系统中订阅者节点与源点之间的距离;步骤二、将系统中的所有节点分别存放在(表示向上取整)个桶中,并从0开始为每个桶标注序号,第0个桶中存放发布者,第i个桶中存放与源点距离范围为的订阅者节点,其中N为系统中所有节点的总数;步骤三、主题发布者将数据推送至第1个桶中的节点,第1个桶中的节点将数据推送至第2个桶中的节点,依次类推,……第i个桶中的节点,将数据推送至第i + 1个桶的节点……,第-1(向上取整)个桶中的节点将数据推送至第(向上取整)个桶中的节点。
更进一步地,上述第i个桶中的节点,将数据推送至第i + 1个桶的节点的具体过程为:将第i个桶中的节点与第i + 1个桶中的节点分别按到源点距离由近至远进行排序,然后从1开始进行编号,比如1,2……,可以分别根据与源点之间的距离由近至远进行排序,将序号作为编号。若M为第i个桶中的所有节点数量,N为第i+1个桶中的所有节点数量, k =,表示向下取整,p=N%M,表示N Mod M,即N除以M取余数。于是,第i个桶中的序号为X的节点将数据推送至第i + 1个桶中序号属于范围[k(X-1) + 1, kX]的节点集合,并且,当(N-p+X)≤N时,第i个桶中的序号为X的节点还要将数据推送至第i + 1个桶中序号为(N-p+X)的节点。
更进一步地,上述计算系统中订阅者节点与源点之间的距离的具体过程为:将每个节点的IP地址进行散列运算,取散列后128位中的最后32位作为每个节点的随机序号,两个节点的之间的距离distance(A, B) = A ⊕ B,即A节点的随机序号异或B节点的随机序号。
更进一步地,使用随机序号+32位IP地址一起标识节点,排序时先根据随机序号判断,再根据IP地址判断,进而进行严格小于的排序。
更进一步地,上述散列运算为MD5。
更进一步地,上述方法还包括将节点的运行状态定义为正常负荷和超负荷两种状态,当状态改变时,广播通知系统内的其他节点,只选择本身负载较轻的节点帮助进行数据推送。
更进一步地,上述方法还包括当某个桶中没数据时,直接跳至下一个桶。
通过采用以上的技术方案,本发明的有益效果为:采用了负载均衡以后,每个订阅者理论上都可以帮助发布者分担对其他订阅者的数据分发,发布者得以正常分发数据,接收者的带宽也得到了有效的利用。
附图说明
图1为本发明的负载均衡方法的数据分发层级推送示意图。
具体实施方式
下面结合说明书附图,详细说明本发明的具体实施方式。
图1为本发明的负载均衡方法的数据分发层级推送示意图,Pub节点将数据推送给第一层的两个Sub节点,第一层的这两个Sub节点节点再将数据分别推送给第二层的四个Sub节点。
本发明公开了一种用于实时信息分发系统的负载均衡方法,其具体包括以下的步骤:步骤一、主题发布者作为源点,计算系统中订阅者节点与源点之间的距离;步骤二、将系统中的所有节点分别存放在(向上取整)个桶中,并从0开始为每个桶标注序号,第0个桶中存放发布者,第i个桶中存放与源点距离范围为的订阅者节点,其中N为系统中所有节点的总数;步骤三、主题发布者将数据推送至第1个桶中的节点,第1个桶中的节点将数据推送至第2个桶中的节点,依次类推,……第i个桶中的节点,将数据推送至第i +1个桶的节点……,第-1(向上取整)个桶中的节点将数据推送至第(向上取整)个桶中的节点。本发明通过计算订阅者节点与发布者之间的距离,将节点依照距离由近至远存放在不同的桶中,由第i个桶中的节点,将数据推送至第i + 1个桶的节点,使得每个订阅者在理论上都可以帮助发布者分担对其他订阅者的数据分发。例如:由1个主题发布者进行数据分发,多个主题订阅者进行数据接收。发布者以V MB/s的速率发送数据,让N个订阅者接收数据。设网络的理论带宽为U MB/s。如果没有采用本发明的负载均衡,发布者会将同一份数据发送给N个订阅者,每个订阅者的最大理论接收速率只有U/N MB/s,在传统的分布式数据分发系统中,如果V大于U/N,那么发布者的数据将无法按照需要的速率发送到每个订阅者那里,每个订阅者的接收带宽也无法达到充分利用。而采用了负载均衡以后,每个订阅者理论上都可以帮助发布者分担对其他订阅者的数据分发,在V小于U的情况下,每个订阅者的接收都可以达到V的接收速率,发布者得以正常分发数据,接收者的带宽也得到了有效的利用。
更进一步地,上述第i个桶中的节点,将数据推送至第i + 1个桶的节点的具体过程为:将第i个桶中的节点与第i + 1个桶中的节点分别按到源点距离由近至远进行排序,然后从1开始进行编号,比如1,2……,可以分别根据与源点之间的距离由近至远进行排序,将序号作为编号。若M为第i个桶中的所有节点数量,N为第i+1个桶中的所有节点数量, k =,向下取整,p=N%M,表示N Mod M,于是,第i个桶中的序号为X的节点将数据推送至第i + 1个桶中序号属于范围[k(X-1) + 1, kX]的节点集合,并且,当(N-p+X)≤N时,第i个桶中的序号为X的节点还要将数据推送至第i + 1个桶中序号为(N-p+X)的节点。通过明确第i个桶中的序号为X的节点将数据推送至第i + 1个桶中序号属于范围[k(X-1) + 1, kX]的节点集合,并且,当(N-p+X)≤N时,第i个桶中的序号为X的节点还要将数据推送至第i +1个桶中序号为(N-p+X)的节点,从而使得每个节点不会重复接收相同的数据。
更进一步地,计算系统中订阅者节点与源点之间的距离的具体过程为:将每个节点的IP地址(32位long型)进行散列运算,比如MD5散列,取散列后128位中的最后32位作为每个节点的随机序号,该序号具有很好的随机性,两个节点的之间的距离distance(A, B)= A ⊕ B,即A节点的随机序号异或B节点的随机序号。
更进一步地,使用随机序号+32位IP地址一起标识节点,排序时先根据随机序号判断,再根据IP地址判断,进而进行严格小于的排序。上述随机序号有大约十万分之三的碰撞概率,所以在标识一个节点时,实际上可以使用序号+32位IP地址来一起标识,当出现散列碰撞以后,再根据IP地址的大小,判断节点间距离的远近。由于分发链是单向的,并且分发链上的节点是按照本地距离严格单调递增的顺序连接的,任何节点在特定的分发链上都只会出现一次,从而不会重复接收相同的数据。
更进一步地,上述方法还包括将节点的运行状态定义为正常负荷和超负荷两种状态,当状态改变时,广播通知系统内的其他节点,只选择本身负载较轻的节点帮助进行数据推送。分担代理应该是那些本身负载较轻的节点,可以将节点的运行状态定义为正常负荷、超负荷两种状态,当状态改变时,广播通知系统内的其他节点。在明确全系统负载状态情况下,进行分担代理的选择,为理想选择。作为发布者在选择分担代理时,首先选择距离自己较近的节点,将数据发送给较近的节点,再由较近的节点转发给相对较远的节点。
更进一步地,上述方法还包括当某个桶中没数据时,直接跳至下一个桶。
以一套环境实时电磁数据采集处理系统为例,该系统包含15个席位,其中一个席位是唯一的环境电磁数据采集者与信息发布者,其他14个席位都需要接收环境电磁数据进行数据处理。这里为了方便描述,将此系统中所有的席位从0~14号进行编号。0号为数据发布者,1~14号为数据订阅者。
15个席位的工作环境为全双工百兆网。在相同网段分三次任意配置15台主机的IP地址。发布者以4MB/s的速率发送单包大小8KB的数据,测试发布者的数据发送速率及每个订阅者(部分接收者同时也是数据分发分担者)的数据接收速率。
订阅者的编号为1~14。在三次实验中,每个订阅者的接收速率都是4MB/s。由于是在百兆网环境中,如果没有采用负载均衡,发布者会将同一份数据发送给14个订阅者,100Mbit/s的网络吞吐能力平均分配给14条连接后,每个订阅者的理论接收速率上限只有0.89MB/s,订阅者的接收速率远远达不到发送者的发送速率,而且也会导致发送者的发送速率不能持续超过0.89MB/s。而采用了负载均衡以后,每个订阅者理论上可以为发布者分担对三个其他订阅者的数据分发,因此可以每个订阅者都可以达到4MB/s的接收速率。实验结果表明,每个订阅者的数据接收速率都达到了4MB/s,因此达到了负载均衡的效果。
三次测试,数据分担者的选择结果如表1所示,(每次实验中的编号表示,订阅者帮助发布者分担了向哪些节点数据分发,“第一层”,表示直接从发布者接收数据)。第一次:0号发布者将数据推送给3、4、5、6号订阅者,3号订阅者将数据推送给7、8号订阅者,4号订阅者将数据推送给9、10号订阅者,5号订阅者将数据推送给11、12号订阅者,6号订阅者将数据推送给13、14号订阅者。第一次:0号发布者将数据推送给1、8、12、14号订阅者,8号订阅者将数据推送给3、11号订阅者,11号订阅者又将数据推送给7、10号订阅者,7号订阅者再将数据推送给2、5号订阅者,2号订阅者紧接着将数据推送给4、9号订阅者。第一次:0号发布者将数据推送给3、13、1、5号订阅者,1号订阅者将数据推送给10、14号订阅者,5号订阅者将数据推送给4、6号订阅者,4号订阅者再将数据推送给9、11号订阅者,9号订阅者紧接着将数据推送给7、8号订阅者。
表1
上述的实施例中所给出的系数和参数,是提供给本领域的技术人员来实现或使用发明的,发明并不限定仅取前述公开的数值,在不脱离发明的思想的情况下,本领域的技术人员可以对上述实施例作出种种修改或调整,因而发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

Claims (3)

1.一种用于实时信息分发系统的负载均衡方法,其具体包括以下的步骤:步骤一、数据发布者作为源点,计算系统中订阅者节点与源点之间的距离;步骤二、将系统中的所有节点分别存放在个桶中,并从0开始为每个桶标注序号,第0个桶中存放发布者,第i个桶中存放与源点距离范围为[2i-1,2i)的订阅者节点,其中N为系统中所有节点的总数;步骤三、主题发布者将数据推送至第1个桶中的节点,第1个桶中的节点将数据推送至第2个桶中的节点,依次类推,……第i个桶中的节点,将数据推送至第i+1个桶的节点……,第个桶中的节点将数据推送至第个桶中的节点,
计算系统中订阅者节点与源点之间的距离的具体过程为:将每个节点的IP地址进行散列运算,取散列后128位中的最后32位作为每个节点的随机序号,两个节点的之间的距离distance(A,B)=A⊕B,即A节点的随机序号异或B节点的随机序号;
所述第i个桶中的节点,将数据推送至第i+1个桶的节点的具体过程为:将第i个桶中的节点与第i+1个桶中的节点分别按到源点距离由近至远进行排序,然后从1开始进行编号,M为第i个桶中的所有节点数量,Q为第i+1个桶中的所有节点数量,第i个桶中的序号为X的节点将数据推送至第i+1个桶中序号属于范围[k(X-1)+1,kX]的节点集合,当(Q-p+X)≤Q时,第i个桶中的序号为X的节点还要将数据推送至第i+1个桶中序号为(Q-p+X)的节点,p=(QmodM),当某个桶中没有节点时,直接跳至下一个桶。
2.如权利要求1所述的用于实时信息分发系统的负载均衡方法,其特征在于使用随机序号+32位IP地址一起标识节点,排序时先根据随机序号判断,再根据IP地址判断,进而进行严格小于的排序。
3.如权利要求2所述的用于实时信息分发系统的负载均衡方法,其特征在于散列运算为MD5。
CN201410642893.XA 2014-11-14 2014-11-14 一种用于实时信息分发系统的负载均衡方法 Active CN104378426B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410642893.XA CN104378426B (zh) 2014-11-14 2014-11-14 一种用于实时信息分发系统的负载均衡方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410642893.XA CN104378426B (zh) 2014-11-14 2014-11-14 一种用于实时信息分发系统的负载均衡方法

Publications (2)

Publication Number Publication Date
CN104378426A CN104378426A (zh) 2015-02-25
CN104378426B true CN104378426B (zh) 2018-06-12

Family

ID=52557072

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410642893.XA Active CN104378426B (zh) 2014-11-14 2014-11-14 一种用于实时信息分发系统的负载均衡方法

Country Status (1)

Country Link
CN (1) CN104378426B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10122647B2 (en) * 2016-06-20 2018-11-06 Microsoft Technology Licensing, Llc Low-redistribution load balancing
CN106330744B (zh) * 2016-08-23 2019-08-16 上海创景信息科技有限公司 基于网络的主题订阅系统
CN108282500A (zh) * 2017-01-05 2018-07-13 阿里巴巴集团控股有限公司 消息发布方法、装置以及电子设备
CN109936635B (zh) * 2019-03-12 2021-09-28 北京百度网讯科技有限公司 负载均衡方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102355413A (zh) * 2011-08-26 2012-02-15 北京邮电大学 一种大规模实时统一消息空间的方法及其系统
CN104010003A (zh) * 2014-06-18 2014-08-27 中国人民解放军国防科学技术大学 用于快速提升Sybil节点重要性的渗透方法
CN104144100A (zh) * 2013-05-10 2014-11-12 中国电信股份有限公司 海量群组通信的实现方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996683B2 (en) * 2008-06-09 2015-03-31 Microsoft Technology Licensing, Llc Data center without structural bottlenecks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102355413A (zh) * 2011-08-26 2012-02-15 北京邮电大学 一种大规模实时统一消息空间的方法及其系统
CN104144100A (zh) * 2013-05-10 2014-11-12 中国电信股份有限公司 海量群组通信的实现方法和系统
CN104010003A (zh) * 2014-06-18 2014-08-27 中国人民解放军国防科学技术大学 用于快速提升Sybil节点重要性的渗透方法

Also Published As

Publication number Publication date
CN104378426A (zh) 2015-02-25

Similar Documents

Publication Publication Date Title
CN103716208B (zh) 支持大象流的网络管理方法、系统、交换机和网络
CN103493449B (zh) 分组交换网络中的有效电路
CN104378426B (zh) 一种用于实时信息分发系统的负载均衡方法
CN101753455B (zh) 转发方法及装置
CN104221323A (zh) 组播流路由选择的方法
CN106302223B (zh) 一种聚合组流量分流的方法和装置
CN101217528B (zh) 一种链路聚合方法和装置
CN104486228B (zh) 一种路由更新的方法及路由更新装置
CN103023804B (zh) 一种聚合链路自适应流量负载均衡方法、装置及网络设备
CN103338161A (zh) 一种实现跨设备聚合的方法和设备
US10181999B2 (en) Optimizing information related to a route and/or a next hop for multicast traffic
CN102447638A (zh) 负载均衡的方法及转发设备
CN102263697A (zh) 一种聚合链路流量分担方法和装置
CN103929368A (zh) 多业务单元负载均衡方法及装置
CN105556916A (zh) 网络流的信息统计方法和装置
CN104601461B (zh) 一种纵向智能弹性架构系统中的报文转发方法及装置
CN104038425A (zh) 转发以太网报文的方法和装置
WO2017000677A1 (zh) 组播控制方法和装置
GB2578415A (en) Methods and systems for transmitting information packets through tunnel groups at a network node
CN102238090B (zh) 匿名通信系统的分组重路由方法
CN102404133A (zh) 一种ip网络数据交互的方法和装置
CN109743253A (zh) 一种融合地理位置的分布式哈希表路由方法
CN104144100B (zh) 海量群组通信的实现方法和系统
CN103428067A (zh) 一种基于二层虚拟专用网络的报文转发方法和设备
CN107682265B (zh) 支付系统的报文路由方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant