数据转发方法及装置制造方法

文档序号:7795179阅读:111来源:国知局
数据转发方法及装置制造方法
【专利摘要】提供了一种在服务器中分配转发信息的方法和装置以及一种在服务器中转发数据的方法和装置,所述在主服务器中分配转发信息的方法包括:获取任意一条订阅数据的订阅量;确定转发该订阅数据的转发节点的扇出量;根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,相邻两组转发节点之间为上下游级联关系;将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点。采用本发明所述方法和装置,本发明不仅能够实现大规模订阅数据的转发,而且能够在数据转发同时,有效克服因为带宽不足导致的数据订阅的延迟。
【专利说明】数据转发方法及装置
【技术领域】
[0001]本申请涉及一种订阅数据转发方法及装置,尤其涉及一种根据下游订阅需求构建级联转发结构的技术。
【背景技术】
[0002]目前Bigpipe(大管道技术)是网络服务中普遍采用的一种分布式消息传输系统,主要采用的是P/s (Primary/Slave的简写,主/从)集群实现数据转发,由于这种p/s集群的出口带宽是固定的,因此限制了能够同时发起的订阅量,当下游订阅量突然变大时,很容易导致每个下游分配到的带宽不足,从而造成数据订阅的不断延迟。
[0003]为满足下游的大量订阅需求,现有技术也提供了一些解决方案,例如在Bigpipe的p/s下面下挂多层common broker (代理服务器)来实现大规模数据的转发,但是,由于下游的订阅需求是随时变化的,而这种数据转发结构是固定的,不能随着订阅需求的改变进行相应的调整,因此,这种数据转发策略不能实现common broker资源的合理分配,反而会造成大量的common broker处于闲置状态,造成机器资源的浪费。

【发明内容】

[0004]本发明的目的在于提供一种数据转发的方法和装置,本发明不仅能够实现大规模订阅数据的转发,而且能够在数据转发同时,有效克服因为带宽不足导致的数据订阅的延迟。
[0005]根据本发明的一方面,提供一种在服务器中分配转发信息的方法,所述方法包括:获取任意一条订阅数据的订阅量;确定转发该订阅数据的转发节点的扇出量;根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,以便所述转发节点按照该订阅数据的级联转发控制信息转发该订阅数据。
[0006]优选地,在将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点以前,所述方法还包括:监测该订阅数据的级联转发控制信息所包括的转发节点之中是否存在发生异常的转发节点;如果该订阅数据的级联转发控制信息所包括的转发节点之中存在发生异常的转发节点,则将发生异常的转发节点更换为该订阅数据的级联转发控制信息所包括的转发节点之外的另一正常的转发节点,以更新该订阅数据的级联转发控制信息。
[0007]优选地,所述异常为以下情况之一:宕机、下架、假死、网络故障、挂机及停机。
[0008]优选地,所述将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点的具体步骤包括:将该订阅数据的指示信息及该订阅数据的级联转发控制信息存储至预置的元信息映射表中,所述元信息映射表用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,将该订阅数据的指示信息及该订阅数据的级联转发控制信息发送至公共服务器,所述公共服务器用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0009]根据本发明的另一方面,提供一种在服务器中分配转发信息的装置,所述装置包括:订阅量获取单元,用于获取任意一条订阅数据的订阅量;扇出量获取单元,用于确定转发该订阅数据的转发节点的扇出量;级联信息构建单元,用于根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;级联信息分配单元,用于将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,以便所述转发节点按照该订阅数据的级联转发控制信息转发该订阅数据。
[0010]优选地,所述方法还包括:级联信息更新单元,用于在将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点以前,监测该订阅数据的级联转发控制信息所包括的转发节点之中是否存在发生异常的转发节点;如果该订阅数据的级联转发控制信息所包括的转发节点之中存在发生异常的转发节点,则将发生异常的转发节点更换为该订阅数据的级联转发控制信息所包括的转发节点之外的另一正常的转发节点,以更新该订阅数据的级联转发控制信息。
[0011]优选地,所述异常为以下情况之一:宕机、下架、假死、网络故障、挂机及停机。
[0012]根据本发明的另一方面,提供一种在服务器中转发数据的方法,所述方法包括:从服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;向接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息;从该上游转发节点接收订阅数据。
[0013]优选地,所述方法还包括:响应于所述接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
[0014]优选地,所述从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息的具体步骤包括:按照预设的时间间隔,从主服务器周期性地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,从主服务器实时地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0015]根据本发明的另一方面,提供一种在服务器中转发数据的装置,所述装置包括:级联信息接收单元,用于从服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;订阅请求单元,用于向接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息;数据接收单元,用于从该上游转发节点接收订阅数据。[0016]优选地,所述装置还包括:订阅响应单元,用于响应于所述接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
[0017]优选地,所述级联信息接收单元按照预设的时间间隔,从主服务器周期性地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,从主服务器实时地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0018]优选地,所述级联信息分配单元将该订阅数据的指示信息及该订阅数据的级联转发控制信息存储至预置的元信息映射表中,所述元信息映射表用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,将该订阅数据的指示信息及该订阅数据的级联转发控制信息发送至公共服务器,所述公共服务器用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0019]有益效果
[0020]与现有技术相比,本发明具有以下优点:
[0021]本发明不仅能够实现大规模订阅数据的转发,而且能够在数据转发同时,有效克服因为带宽不足导致的数据订阅的延迟。此外,本发明还能够随着下游订阅需求的变化选择数量合理的设备实现大量订阅数据的转发,这使得机器资源的利用得到了合理的分配,进而有效避免了机器资源的浪费。
【专利附图】

【附图说明】
[0022]通过下面结合附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
[0023]图1是示出根据本发明的示例性实施例的在服务器中分配转发信息的方法的流程图;
[0024]图2是示出根据本发明的示例性实施例的在服务器中转发数据的方法的流程图;
[0025]图3是示出根据本发明的示例性实施例的在服务器中分配转发信息的装置的结构框图;
[0026]图4是示出根据本发明的示例性实施例的在服务器中转发数据的装置的结构框图;
[0027]图5是示出根据本发明的示例性实施例的在Bigpipe分布式传输系统中实现数据转发的示意图。
【具体实施方式】
[0028]以下,将参照附图来详细说明本发明的实施例。
[0029]图1示出了本发明一种在服务器中分配转发信息的方法的优选实施例的流程图。图3示出的一种在服务器中分配转发信息的装置可用于实现图1中所述的方法。
[0030]参照图1,在110中,所述装置获取任意一条订阅数据的订阅量。[0031]在120中,所述装置确定转发该订阅数据的转发节点的扇出量。
[0032]其中,转发节点即各个代理服务器,转发节点的扇出量为一份数据能够被该转发节点同时向下转发的份数(即代理服务器的订阅量和发布量之比)。
[0033]在130中,所述装置根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系。
[0034]在一个具体的实施例中,假设所述装置需要将I份订阅数据转发给1000个订阅端,则该订阅数据的订阅量为1000份,由于I个转发节点只能扇出10份订阅数据,为实现这1000份订阅数据的转发,可将若干个转发节点级联在一起扩大数据扇出能力。由于根据如下公式可以确定转发该订阅数据所需的转发节点个数:
[0035]转发节点个数=订阅量/转发节点的扇出量
[0036]可以推知,所述装置至少需要100个转发节点才能实现1000份订阅数据的转发;又由于这100个转发节点需要扇入100份订阅数据,因此所述装置至少还需要10个上游转发节点才能实现100份订阅数据的扇入;又由于这10个转发节点需要扇入10份订阅数据,因此所述装置至少还需要I个转发节点才能实现10份订阅数据的扇入。可以看出,所述装置为转发该订阅数据需要构建一个如下所示级联结构信息:
[0037]L1:1个转发节点
[0038]L2:10个转发节点
[0039]L3:100个转发节点
[0040]其中,LI为级联转发控制信息的第一组转发节点,L2为级联转发控制信息的第二组转发节点,L3为级联转发控制信息的第三组转发节点,其中,LI是与L2相邻的上游转发节点,L2是与LI相邻的下游转发节点,L2是与L3相邻的上游转发节点,L3是与L2相邻的上游转发节点,也就是说,相邻的两组转发节点之间为上下游级联关系,其中,任意一组转发节点可以向相邻的上游转发节点发送订阅请求,以便从上游转发节点中接收订阅数据;同时,该组转发节点还负责响应相邻的下游转发节点的订阅请求,以便向其发送从上游节点接收到的订阅数据。
[0041]在另一个具体的实施例中,为避免构建的级联转发控制信息中的转发节点出现负载过于集中的现象,所述装置可在第一组转发节点LI中增加2个冗余节点,以分担LI中I个转发节点的负载量,相应地,该订阅数据的级联转发控制信息调整如下:
[0042]LI:3个转发节点
[0043]L2:10个转发节点
[0044]L3:100个转发节点
[0045]除了可以在第一组转发节点LI中增加冗余节点,所述装置还可以根据需要在各组转发节点中都增加一些冗余节点,以此提高级联转发控制信息中各个级联层级的负载能力。
[0046]从上述实施例中可以看出,无论怎样变换级联转发控制信息,级联转发控制信息必须包括至少一组转发节点,相邻两组转发节点之间为上下游级联关系。
[0047]同时还应该看出,所述装置通过构建级联转发控制信息,不仅可以实现大规模订阅数据的转发,而且还可以根据不同的订阅需求选择合理数量的转发机器进行数据转发,这也使得机器资源利用率得到了进一步的提高。
[0048]在前面所述的实施例中,所述装置采用的是推算的方法构建该订阅数据的级联转发控制信息,由于这种方法不便于对数据进行实时维护和更新,因此,为进一步实现级联转发控制信息的自动构建,降低运维成本,根据本发明的一个示例性实施例,所述装置构建该订阅数据的级联转发控制信息的具体步骤为:所述装置根据获取的订阅量及确定的扇出量,确定所述级联转发控制信息的级联的组数以及级联的各个组对应的转发节点个数;按照确定的级联的组数以及级联的各个组对应的转发节点个数,确定所述级联转发控制信息的级联的各个组对应的转发节点;根据确定的级联的各个组对应的转发节点,构建该订阅数据的级联转发控制信息。
[0049]具体地,根据本发明的一个示例性实施例,所述装置确定所述级联转发控制信息的级联的组数的具体步骤为:所述装置通过以下公式确定所述级联转发控制信息的级联的组数:
[0050]L=logEateCapacity
[0051]其中,L为所述级联转发控制信息的级联的组数,Capacity为该订阅数据的订阅量,Rate为转发该订阅数据的转发节点的扇出量。
[0052]相应地,所述装置确定所述级联转发控制信息的级联的各个组对应的转发节点个数的具体步骤为:所述装置通过以下公式确定所述级联转发控制信息的各个对应的转发节点个数:
[0053]Num(N)=Capacity/(RateLK))N= e [1, L]
[0054]其中,Num(N)为第N组对应的转发节点个数。
[0055]例如,当该订阅数据的订阅量为27份时,转发该订阅数据的所有的转发节点的扇出量为3份时,按照前面所述的方法,所述装置构建的级联转发控制信息如下:
[0056]级联的组数:L=3
[0057]各个组对应的转发节点个数为:
[0058]L3:Num (3) =9
[0059]L2:Num (2) =3
[0060]LI:Num (1) =1
[0061]具体实施时,考虑到第一组转发节点L1中1个转发节点会导致负载过于集中,为确保数据转发的顺利进行,所述装置可在第一组转发节点L1中增加2个冗余节点,以分担L1中1个转发节点的数据转发任务。
[0062]类似地,当该订阅数据的订阅量为20份时,按照前面所述的方法,所述装置确定的级联转发控制信息如下:
[0063]级联的组数:L=2
[0064]各个组对应的转发节点个数为:
[0065]L2:Num (2) =8
[0066]LI:Num (1) =3
[0067]应该理解,上述级联转发控制信息的构建方法仅仅只是示例性的,本发明并不受限于此,只要构建的方法有助于级联转发控制信息的自动构建,降低所述装置的运维成本,则均可应用于本发明。[0068]另外,考虑到负载均衡等各个方面的因素,在为级联转发控制信息的各个组分配具体的转发节点时,根据本发明的一个示例性实施例,所述装置确定所述级联转发控制信息的各个组对应的转发节点的具体步骤为:所述装置按照确定的级联的组数以及级联的各个组对应的转发节点个数,将预置资源池中负载最低的转发节点确定为所述级联转发控制信息的任意一组的转发节点,所述预置资源池中包含有多个转发节点。
[0069]由于级联转发控制信息所包括的任意一个转发节点在数据传输过程中会都有可能受到异常情况的干扰,因此可能会影响到订阅数据顺利转发。为解决这一问题,根据本发明的一个示例性实施例,在图1所述的实施例中,所述方法还包括:所述装置监测该订阅数据的级联转发控制信息所包括的转发节点之中是否存在发生异常的转发节点;如果该订阅数据的级联转发控制信息所包括的转发节点之中存在发生异常的转发节点,则将发生异常的转发节点更换为该订阅数据的级联转发控制信息所包括的转发节点之外的另一正常的转发节点,以更新该订阅数据的级联转发控制信息。
[0070]其中,所述异常可以是宕机、下架、假死、网络故障、挂机、停机等各种导致机器出现故障或不能运行的情况。
[0071]在140中,所述装置将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,以便所述转发节点按照该订阅数据的级联转发控制信息转发该订阅数据。
[0072]该订阅数据的级联转发控制信息所包括的任意一个转发节点从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;该转发节点向接收的级联转发控制信息所包括的任意一个与该转发节点所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息;从该上游转发节点接收订阅数据;同时,该转发节点对应的服务器还响应于所述接收的级联转发控制信息所包括的任意一个与该转发节点所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
[0073]根据本发明的一个示例性实施例,所述装置将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点的具体步骤为:所述装置将该订阅数据的指示信息及该订阅数据的级联转发控制信息存储至预置的元信息映射表中,所述元信息映射表用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0074]为进一步提高所述装置的计算能力,减轻所述装置所在主服务器的数据存储的负担,级联转发控制信息的计算和级联转发控制信息的存储可在不同的服务器设备上实现,根据本发明的另一示例性实施例,所述装置将构建的级联转发控制信息提供给构建的级联转发控制信息所指示的转发节点的具体步骤为:所述装置将该订阅数据的指示信息及该订阅数据的级联转发控制信息发送至公共服务器,所述公共服务器用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0075]应该理解,上述级联转发控制信息的存储和分配方法仅仅只是示例性的,本发明并不受限于此,只要存储和分配的方法有助于各个转发节点及时获取到被分配的订阅数据,均可应用于本发明。
[0076]具体实施时,所述装置可采用如下数据结构记录构建的级联转发控制信息:
[0077]StripeA
[0078]{
[0079]Forward_capacity:1000
[0080]Cascade_info:
[0081]{
[0082]{brokerl, broker2, broker3}
[0083]{broker4, broker5,…,brokerl3},
[0084]{broker 14, broker 15,...,brokerl 13}
[0085]}
[0086]}
[0087]其中,StripeA为任意一条订阅数据的指示信息,Forward_capacity: 1000为StripeA的订阅量是1000份,Cascade_info为StripeA的级联转发控制信息,{brokerl, broker2, broker3}为StripeA的级联转发控制信息的第一组转发节点,{broker4, broker5,…,brokerl3}为StripeA的级联转发控制信息的第二组转发节点,{brokerl4, brokerl5,…,brokerl 13}为StripeA级联转发控制信息的第三组转发节点。
[0088]为保证构建的级联转发控制信息所指示的各个转发节点能够及时获取到被分配的数据转发任务,所述装置还在数据库或者公共节点中存储有各个转发节点被分配的订阅数据的指示信息以及各个订阅数据的级联转发控制信息。具体实施时,所述装置可采用如下数据结构使得各个转发节点获得被分配到的数据转发任务:
[0089]CommonGroupl
[0090]{
[0091 ] Forward_rate:10
[0092]Brokers:
[0093]{
[0094]{brokerName:brokerl, Stripes: {StripeA, StripeC,...}
[0095]{brokerName:broker2, Stripes: {StripeB, StripeF,...}
[0096]{brokerName:broker3, Stripes: {StripeA, StripeD,...}
[0097]…
[0098]}
[0099]}
[0100]其中,CommonGroupl为一个预先设定的集群或资源池的标识,该集群负责管理若干个转发节点的元信息(及承担的数据转发任务),Forward_rate: 10为该集群中各个转发节点的扇出量,{broker Name:brokerl, Stripes: {StripeA, StripeC,...}表明转发节点brokerl除了承担了 StripeA的订阅数据转发任务,同时还承担有StripeC等其他订阅数据的转发任务。
[0101]集群或资源池中的各个转发节点通过访问元信息,以确认自己是否在新的订阅数据中承担了数据发送任务,如果有,则查找该级联转发控制信息中上游的转发节点,并主动连接上游的订阅数据,以便将上游的订阅数据发送至下游的转发节点(或者最终的订阅端)。
[0102]需要说明的是,所述装置除了可以单独实现对订阅数据的转发,还可以作为现有数据传输系统中的数据(或消息)转发中间件实现对订阅数据的转发。
[0103]以下结合具体的例子,对本发明作进一步的说明。
[0104]图5是示出了本发明在Bigpipe分布式传输系统中实现数据转发的示意图。图中所示的5A为Bigpipe分布式传输系统的P/S集群,所示的5B为预置资源池,用于存储和管理多个转发节点,预置资源池5B中所包括的任意一个转发节点都可以充当任意一个订阅数据的转发节点。例如,图中所示实线箭头指示的是stripel数据流的转发控制信息,则根据实线箭头指向,stripel的第二组转发节点为:500、501,stripel的第二组转发节点为:510、511、512、502,stripel的第三组转发节点为:520、521、515、505。图中所示虚线箭头指示的是stripe2数据流的转发控制信息,则根据虚线箭头指向,stripe2的第一组转发节点为:502、505,stripe2的第二组转发节点为:511、512、515、514。从图中可以看出,同一个转发节点(如图中所示的502、511、512等)不仅负责多个数据转发,而且在不同转发数据的级联转发控制信息中的位置都可能不一样。
[0105]从上述实施过程中可以看出,当订阅数据的订阅量越大时,所述装置构建的级联转发控制的转发能力也就越大,这样自适应能力不仅能够实现大规模订阅数据的转发,而且能够根据下游订阅需求的变化随时调整级联转发的控制结构,这使得机器资源的利用得到了合理的分配,避免了机器资源的浪费。
[0106]图2示出了本发明一种在服务器中转发数据的方法的优选实施例的流程图。图4示出的一种在服务器中转发数据的装置可用于实现图2中所述的方法。
[0107]参照图2,在210中,所述装置从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系。
[0108]为了使得转发节点及时获取到被分配的数据转发任务,根据本发明的一个示例性实施例,所述装置从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息的具体步骤为:所述装置根据本发明的按照预设的时间间隔,从主服务器周期性地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。例如,所述装置可以每隔I秒(或2秒)从主服务器获取所述服务器对应的待转发订阅数据的级联转发控制信息。
[0109]由于主服务器随时都在生成订阅数据的级联转发控制信息,根据本发明的另一示例性实施例,所述装置从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息的具体步骤为:所述装置从主服务器实时地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0110]应该理解,除了上述获取级联转发控制信息的方式外,本发明并不受限于此,还可以采用其他各种现有技术获得该信息。
[0111]在220中,所述装置向接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息。
[0112]在230中,所述装置从该上游转发节点接收订阅数据。
[0113]为订阅数据达到最终的订阅端,根据本发明的一个优选实施例,在图2所示的实施例中,所述方法还包括:所述装置响应于所述接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
[0114]以下结合具体的例子,对本发明中各个转发节点的数据转发过程作进一步的说明。
[0115]在如下级联转发控制信息中,级联转发控制信息所包括的转发节点如下所示:
[0116]LI: {brokerl, broker2, broker3}
[0117]L2: {broker4, broker5,…,brokerl3},
[0118]L3: {broker 14,broker 15,...,brokerl 13}
[0119]其中,broker4可以向任意一个与broker4相邻的上游转发节点发送订阅请求以获取订阅数据,与broker4相邻的上游转发节点为:brokerl, broker2, broker3 ;同时还负责响应任意一个与broker4相邻的下游转发节点的订阅请求以转发从上游节点获得的订阅数据,任意一个与broker4相邻的下游转发节点为:brokerl4, brokerl5,…,brokerl 13?
[0120]brokerl4可以向任意一个与brokerl4相邻的上游转发节点发送订阅请求以获取订阅数据,与brokerl4相邻的上游转发节点为:broker4, broker5,…,brokerl3 ;同时还负责响应任意一个与broker 14对应的任意一个订阅端的订阅请求以转发从上游节点获得的订阅数据。
[0121]brokerl可以向任意一个与brokerl相邻的任意一个发布端发送订阅请求以获取订阅数据;同时还负责响应任意一个与brokerl相邻的下游转发节点的订阅请求以转发从上游节点获得的订阅数据,与brokerl相邻的下游转发节点为:broker4, broker5,…,brokerl3。
[0122]图3示出了本发明一种在主服务器中分配转发信息的装置的优选实施例结构框图。
[0123]参照图3,所述装置至少包括订阅量获取单元301、扇出量获取单元302、级联信息构建单元303以及级联信息分配单元304。
[0124]其中,订阅量获取单元301,用于获取任意一条订阅数据的订阅量。
[0125]扇出量获取单元302,用于确定转发该订阅数据的转发节点的扇出量。
[0126]级联信息构建单元303,用于根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系。
[0127]级联信息分配单元304,用于将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,以便所述转发节点按照该订阅数据的级联转发控制信息转发该订阅数据。
[0128]由于级联转发控制信息所包括的任意一个转发节点在数据传输过程中会都有可能受到异常情况的干扰,因此可能会影响到订阅数据顺利转发。为解决这一问题,根据本发明的一个示例性实施例,在图3所述的实施例中,所述装置还包括:级联信息更新单元(图中未示出),用于在将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点以前,监测该订阅数据的级联转发控制信息所包括的转发节点之中是否存在发生异常的转发节点;如果该订阅数据的级联转发控制信息所包括的转发节点之中存在发生异常的转发节点,则将发生异常的转发节点更换为该订阅数据的级联转发控制信息所包括的转发节点之外的另一正常的转发节点,以更新该订阅数据的级联转发控制信息。
[0129]其中,所述异常可以是宕机、下架、假死、网络故障、挂机、停机等各种导致机器出现故障或不能运行的情况。
[0130]根据本发明的一个示例性实施例,所述级联信息分配单元304将该订阅数据的指示信息及该订阅数据的级联转发控制信息存储至预置的元信息映射表中,所述元信息映射表用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0131]为进一步提高所述装置的计算能力,减轻所述装置所在主服务器的数据存储的负担,级联转发控制信息的计算和级联转发控制信息的存储可在不同的服务器设备上实现,根据本发明的另一示例性实施例,所述级联信息分配单元304将该订阅数据的指示信息及该订阅数据的级联转发控制信息发送至公共服务器,所述公共服务器用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0132]应该理解,上述级联转发控制信息的存储和分配方法仅仅只是示例性的,本发明并不受限于此,只要存储和分配的方法有助于各个转发节点及时获取到被分配的订阅数据,均可应用于本发明。
[0133]图4示出了本发明一种在服务器中转发数据的装置的优选实施例结构框图。
[0134]参照图4,所述装置至少包括级联信息接收单元401、订阅请求单元402以及数据接收单元403。
[0135]其中,级联信息接收单元401,用于从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系。
[0136]订阅请求单元402,用于向接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息。
[0137]数据接收单元403,用于从该上游转发节点接收订阅数据。
[0138]为订阅数据达到最终的订阅端,根据本发明的一个优选实施例,在图2所示的实施例中,所述装置还包括:订阅响应单元(图中未示出),用于响应于所述接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
[0139]为了使得转发节点及时获取到被分配的数据转发任务,根据本发明的一个示例性实施例,所述级联信息接收单元401按照预设的时间间隔,从主服务器周期性地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0140]由于主服务器随时都在生成订阅数据的级联转发控制信息,根据本发明的另一示例性实施例,所述级联信息接收单元401从主服务器实时地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
[0141]应该理解,除了上述获取级联转发控制信息的方式外,本发明并不受限于此,还可以采用其他各种现有技术获得该信息。
[0142]由此可见,与现有技术相比,本发明不仅有效解决了在大规模订阅数据的转发情况下,因为机器带宽有限而引起的数据订阅的延迟现象,而且能够随着下游订阅需求的变化随时调整级联转发的结构,进而使得机器资源的利用也得到了合理的分配,避免了机器资源的浪费。
[0143]需要指出,根据实施的需要,可将本申请中描述的各个步骤拆分为更多步骤,也可将两个或多个步骤或者步骤的部分操作组合成新的步骤,以实现本发明的目的。
[0144]上述根据本发明的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD R0M、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的处理方法。此外,当通用计算机访问用于实现在此示出的处理的代码时,代码的执行将通用计算机转换为用于执行在此示出的处理的专用计算机。
[0145]尽管已参照优选实施例为和描述了本发明,但本领域技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对这些实施例进行各种修改和变换。
【权利要求】
1.一种在服务器中分配转发信息的方法,包括: 获取任意一条订阅数据的订阅量; 确定转发该订阅数据的转发节点的扇出量; 根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系; 将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,以便所述转发节点按照该订阅数据的级联转发控制信息转发该订阅数据。
2.如权利要求1所述的方法,其特征在于,在将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点以前,还包括: 监测该订阅数据的级联转发控制信息所包括的转发节点之中是否存在发生异常的转发节点; 如果该订阅数据的级联转发控制信息所包括的转发节点之中存在发生异常的转发节点,则将发生异常的转发节点更换为该订阅数据的级联转发控制信息所包括的转发节点之外的另一正常的转发节点,以更新该订阅数据的级联转发控制信息。
3.如权利要求2所述的方法,其特征在于,所述异常为以下情况之一:宕机、下架、假死、网络故障、挂机及停机。
4.如权利要求1所述的方法,其特征在于,所述将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,包括: 将该订阅数据的指示信息及该订阅数据的级联转发控制信息存储至预置的元信息映射表中,所述元信息映射表用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者, 将该订阅数据的指示信息及该订阅数据的级联转发控制信息发送至公共服务器,所述公共服务器用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信肩、O
5.一种在服务器中 分配转发信息的装置,包括: 订阅量获取单元,用于获取任意一条订阅数据的订阅量; 扇出量获取单元,用于确定转发该订阅数据的转发节点的扇出量; 级联信息构建单元,用于根据获取的订阅量及确定的扇出量,构建该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系; 级联信息分配单元,用于将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点,以便所述转发节点按照该订阅数据的级联转发控制信息转发该订阅数据。
6.如权利要求5所述的装置,其特征在于,还包括: 级联信息更新单元,用于在将该订阅数据的指示信息及该订阅数据的级联转发控制信息分配给该订阅数据的级联转发控制信息所包括的转发节点以前,监测该订阅数据的级联转发控制信息所包括的转发节点之中是否存在发生异常的转发节点;如果该订阅数据的级联转发控制信息所包括的转发节点之中存在发生异常的转发节点,则将发生异常的转发节点更换为该订阅数据的级联转发控制信息所包括的转发节点之外的另一正常的转发节点,以更新该订阅数据的级联转发控制信息。
7.如权利要求6所述的装置,其特征在于,所述异常为以下情况之一:宕机、下架、假死、网络故障、挂机及停机。
8.如权利要求5所述的装置,其特征在于,所述级联信息分配单元将该订阅数据的指示信息及该订阅数据的级联转发控制信息存储至预置的元信息映射表中,所述元信息映射表用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,将该订阅数据的指示信息及该订阅数据的级联转发控制信息发送至公共服务器,所述公共服务器用于存储转发节点对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息,以便转发节点获取对应的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
9.一种在服务器中转发数据的方法,其特征在于,包括:从服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发 控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;向接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息;从该上游转发节点接收订阅数据。
10.如权利要求9所述的方法,其特征在于,还包括:响应于所述接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
11.如权利要求9或10所述的方法,其特征在于,所述从主服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,包括:按照预设的时间间隔,从主服务器周期性地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,从主服务器实时地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息。
12.—种在服务器中转发数据的装置,其特征在于,包括:级联信息接收单元,用于从服务器接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息,所述级联转发控制信息包括至少一组转发节点,并且相邻两组转发节点之间为上下游级联关系;订阅请求单元,用于向接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的上游组的转发节点发送订阅请求,所述订阅请求包含有接收的订阅数据的指示信息;数据接收单元,用于从该上游转发节点接收订阅数据。
13.如权利要求12所述的装置,其特征在于,还包括: 订阅响应单元,用于响应于所述接收的级联转发控制信息所包括的任意一个与所述服务器所在的组相邻的下游组的转发节点的订阅请求,以便将接收的订阅数据发送给该下游转发节点。
14.如权利要求12或13所述的装置,其特征在于,所述级联信息接收单元按照预设的时间间隔,从主服务器周期性地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转发控制信息;或者,从主服务器实时地接收分配给所述服务器的订阅数据的指示信息以及该订阅数据的级联转`发控制`信息。
【文档编号】H04L29/08GK103701938SQ201410016446
【公开日】2014年4月2日 申请日期:2014年1月14日 优先权日:2014年1月14日
【发明者】徐寅斐, 陈鹏 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1