树型结构的多集群间的路由控制方法及集群森林转让专利

申请号 : CN201910916819.5

文献号 : CN110611621B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 魏飞石玉鑫

申请人 : 上海依图网络科技有限公司

摘要 :

本申请涉及一种树型结构的多集群间的路由控制方法及集群森林。路由控制方法包括,为多个集群中的每个集群分别设置配置信息,配置信息包括:路由约束信息和集群内节点信息,路由约束信息根据输入约束和/或输出约束的有无来设置,输入约束限制集群中的节点接收信息,输出约束限制集群中的节点发送信息;对于每个集群,根据配置信息以遍历方式计算集群或集群内的节点与其它集群或其它集群内的节点之间的通信路径。本申请通过配置集群的路由约束配合上层集群的控制来控制集群之间的通信,实现了可控应用层路由。

权利要求 :

1.一种树型结构的多集群间的路由控制方法,其特征在于,包括,为多个集群中的每个集群分别设置配置信息,所述配置信息包括:路由约束信息和集群内节点信息,所述路由约束信息根据输入约束和/或输出约束的有无来设置,所述输入约束限制所述集群中的节点接收信息,所述输出约束限制所述集群中的节点发送信息;

对于每个集群,根据所述配置信息以遍历方式计算所述集群或所述集群内的所述节点与其它集群或其它集群内的节点之间的通信路径;

所述输入约束限制:所述集群中的节点接收信息时,从所述集群的子集群之外的集群接收的信息必须通过输入网关转发;

所述输出约束限制:所述集群中的节点发送信息时,向所述集群的子集群之外的集群发送的信息必须通过输出网关转发;

所述输入约束和输出约束限制:所述集群中的节点从所述集群的父集群或者所述父集群下的同层级集群接收的信息必须通过所述输入网关转发,以及向所述父集群或者所述父集群下的同层级集群发送的信息必须通过输出网关转发;

所述输入网关和/或所述输出网关为所述集群内的一个节点;

所述配置信息还包括:所述集群的身份信息和所述集群的父集群的身份信息,所述多个集群根据所述配置信息,构建树型结构;

所述集群根据所述身份信息和所述集群的父集群的身份信息耦合到对应的上层集群。

2.根据权利要求1所述的多集群间的路由控制方法,其特征在于,所述路由约束信息包括无约束、输入约束和输入输出全约束三类。

3.根据权利要求1所述的多集群间的路由控制方法,其特征在于,以遍历方式计算所述集群或所述集群内的所述节点到达其余集群或集群内的节点的路径时,复用所述树型结构中同一支路的其他集群的遍历结果。

4.根据权利要求1所述的多集群间的路由控制方法,其特征在于,还包括,以路由表的形式为所述树型结构中的每个集群保存所述通信路径。

5.根据权利要求1所述的多集群间的路由控制方法,其特征在于,所述身份信息包括:物理地址、逻辑地址、序列号和集群名称中的至少一个。

6.一种包括多个集群的集群森林,其特征在于,

所述多个集群形成树型结构,其中每个集群被配置有配置信息,所述配置信息包括:路由约束信息和集群内节点信息;其中,所述路由约束信息根据输入约束和/或输出约束的有无来设置,所述输入约束限制所述集群中的节点接收信息,所述输出约束限制所述集群中的节点发送信息;

对所述集群森林中的每个集群,所述集群或所述集群内的所述节点与其它集群或其它集群内的节点之间的通信路径根据所述配置信息以遍历方式计算得到;

所述输入约束限制:所述集群中的节点接收信息时,从所述集群的子集群之外的集群接收的信息必须通过输入网关转发;

所述输出约束限制:所述集群中的节点发送信息时,向所述集群的子集群之外的集群发送的信息必须通过输出网关转发;

所述输入约束和输出约束限制:所述集群中的节点从所述集群的父集群或者所述父集群下的同层级集群接收的信息必须通过所述输入网关转发,以及向所述父集群或者所述父集群下的同层级集群发送的信息必须通过输出网关转发;

所述输入网关和/或所述输出网关为所述集群内的一个节点;

所述配置信息还包括:所述集群的身份信息和所述集群的父集群的身份信息,所述多个集群根据所述配置信息,构建树型结构;

所述集群根据所述身份信息和所述集群的父集群的身份信息耦合到对应的上层集群。

7.根据权利要求6所述的集群森林,其特征在于,所述路由约束信息包括无约束、输入约束和输入输出全约束三类。

8.根据权利要求6所述的集群森林,其特征在于,以遍历方式计算所述集群或所述集群内的所述节点到达其余集群或集群内的节点的路径时,复用所述树型结构中同一支路的其他集群的遍历结果。

9.根据权利要求6所述的集群森林,其特征在于,所述集群森林中的每个集群的所述通信路径以路由表的形式保存。

10.根据权利要求6所述的集群森林,其特征在于,所述身份信息包括:物理地址、逻辑地址、序列号和集群名称中的至少一个。

11.一种树型结构的多集群间的系统,其特征在于,包括:

存储器,所述存储器中存储有指令,和

处理器,用于读取所述存储器中的指令,以执行:

为多个集群中的每个集群分别设置配置信息,所述配置信息包括:路由约束信息和集群内节点信息,所述路由约束信息根据输入约束和/或输出约束的有无来设置,所述输入约束限制所述集群中的节点接收信息,所述输出约束限制所述集群中的节点发送信息;

对于每个集群,根据所述配置信息以遍历方式计算所述集群或所述集群内的所述节点与其它集群或其它集群内的节点之间的通信路径;

所述输入约束限制:所述集群中的节点接收信息时,从所述集群的子集群之外的集群接收的信息必须通过输入网关转发;

所述输出约束限制:所述集群中的节点发送信息时,向所述集群的子集群之外的集群发送的信息必须通过输出网关转发;

所述输入约束和输出约束限制:所述集群中的节点从所述集群的父集群或者所述父集群下的同层级集群接收的信息必须通过所述输入网关转发,以及向所述父集群或者所述父集群下的同层级集群发送的信息必须通过输出网关转发;

所述输入网关和/或所述输出网关为所述集群内的一个节点;

所述配置信息还包括:所述集群的身份信息和所述集群的父集群的身份信息,所述多个集群根据所述配置信息,构建树型结构;

所述集群根据所述身份信息和所述集群的父集群的身份信息耦合到对应的上层集群。

12.一种机器可读介质,其特征在于,所述机器可读介质中存储有指令,该指令被机器运行时,所述机器执行:为多个集群中的每个集群分别设置配置信息,所述配置信息包括:路由约束信息和集群内节点信息,所述路由约束信息根据输入约束和/或输出约束的有无来设置,所述输入约束限制所述集群中的节点接收信息,所述输出约束限制所述集群中的节点发送信息;

对于每个集群,根据所述配置信息以遍历方式计算所述集群或所述集群内的所述节点与其它集群或其它集群内的节点之间的通信路径;

所述输入约束限制:所述集群中的节点接收信息时,从所述集群的子集群之外的集群接收的信息必须通过输入网关转发;

所述输出约束限制:所述集群中的节点发送信息时,向所述集群的子集群之外的集群发送的信息必须通过输出网关转发;

所述输入约束和输出约束限制:所述集群中的节点从所述集群的父集群或者所述父集群下的同层级集群接收的信息必须通过所述输入网关转发,以及向所述父集群或者所述父集群下的同层级集群发送的信息必须通过输出网关转发;

所述输入网关和/或所述输出网关为所述集群内的一个节点;

所述配置信息还包括:所述集群的身份信息和所述集群的父集群的身份信息,所述多个集群根据所述配置信息,构建树型结构;

所述集群根据所述身份信息和所述集群的父集群的身份信息耦合到对应的上层集群。

说明书 :

树型结构的多集群间的路由控制方法及集群森林

技术领域

[0001] 本申请涉及一种树型结构的多集群间的路由控制方法及集群森林。

背景技术

[0002] 在分布式系统中,多个应用集群之间的消息通信多通过TCP、UDP建立底层的两个集群之间的网络直连,然后利用上层的HTTP/RPC等协议进行上层应用数据通信。各个集群之间是点对点通信,每个节点均是对等的身份。
[0003] 但在各个集群之间有从属关系,多个集群形成树型结构组成的集群森林时,两颗树中的下级节点并不能直接通信,需要通过上层节点进行路由才能通信,通信权限通常由上层节点控制。

发明内容

[0004] 本申请的目的在于提供一种树型结构的多集群间的路由控制方案。
[0005] 本申请的第一方面提供了一种树型结构的多集群间的路由控制方法,包括,为多个集群中的每个集群分别设置配置信息,配置信息包括:路由约束信息和集群内节点信息,路由约束信息根据输入约束和/或输出约束的有无来设置,输入约束限制集群中的节点接收信息,输出约束限制集群中的节点发送信息;对于每个集群,根据配置信息以遍历方式计算集群或集群内的节点与其它集群或其它集群内的节点之间的通信路径。
[0006] 本申请通过配置集群的路由约束配合上层集群的控制来控制集群之间的通信,实现了可控应用层路由。
[0007] 进一步,输入约束可以限制:集群中的节点接收信息时,从集群的子集群之外的集群接收的信息必须通过输入网关转发;输出约束可以限制:集群中的节点发送信息时,向集群的子集群之外的集群发送的信息必须通过输出网关转发。其中,输入网关和/或输出网关可以为集群内的一个节点。
[0008] 其中,路由约束信息可以包括无约束、输入约束和输入输出全约束三类。
[0009] 进一步,以遍历方式计算集群或集群内的节点到达其余集群或集群内的节点的路径时,可以复用树型结构中同一支路的其他集群的遍历结果;并且,可以以路由表的形式为树型结构中的每个集群保存通信路径。
[0010] 进一步,配置信息还可以包括:集群的身份信息和集群的父集群的身份信息,多个集群可以根据配置信息,构建树型结构。其中,身份信息可以包括:物理地址、逻辑地址、序列号和集群名称中的至少一个。
[0011] 本申请的第二方面提供了一种包括多个集群的集群森林,其中,多个集群形成树型结构,其中每个集群被配置有配置信息,配置信息包括:路由约束信息和集群内节点信息;其中,路由约束信息根据输入约束和/或输出约束的有无来设置,输入约束限制集群中的节点接收信息,输出约束限制集群中的节点发送信息;对集群森林中的每个集群,集群或集群内的节点与其它集群或其它集群内的节点之间的通信路径根据配置信息以遍历方式计算得到。
[0012] 进一步,输入约束可以限制:集群中的节点接收信息时,从集群的子集群之外的集群接收的信息必须通过输入网关转发;输出约束可以限制:集群中的节点发送信息时,向集群的子集群之外的集群发送的信息必须通过输出网关转发。其中,输入网关和/或输出网关可以为集群内的一个节点。
[0013] 进一步,路由约束信息可以包括无约束、输入约束和输入输出全约束三类。
[0014] 进一步,以遍历方式计算集群或集群内的节点到达其余集群或集群内的节点的路径时,可以复用树型结构中同一支路的其他集群的遍历结果;并且,集群森林中的每个集群的通信路径可以以路由表的形式保存。
[0015] 进一步,配置信息还可以包括:集群的身份信息和集群的父集群的身份信息,多个集群根据配置信息,构建树型结构。其中,身份信息可以包括:物理地址、逻辑地址、序列号和集群名称中的至少一个。
[0016] 本申请的第三方面提供了一种系统,包括:存储器,所述存储器中存储有指令,和处理器,用于读取所述存储器中的指令,以执行前述第一方面或第一方面的任一实现方式提供的方法。
[0017] 本申请的第四方面提供了一种机器可读介质,该机器可读介质中存储有指令,指令被机器运行时,该机器执行前述第一方面或第一方面的任一实现方式提供的方法。
[0018] 本申请通过为树形结构中的各个集群设置配置信息,控制集群间的应用层路由,使得树形结构的集群森林中的各个集群之间能够可控地通信。

附图说明

[0019] 图1是根据本申请的实施例的集群森林的结构示意图。
[0020] 图2是根据本申请的实施例的配置信息示例的示意图。
[0021] 图3是根据本申请的实施例的集群森林中的集群内部的结构示意图。
[0022] 图4是根据本申请的实施例的树型结构的多集群间的路由控制方法的流程图。

具体实施方式

[0023] 下面结合具体实施例和附图对本申请做进一步说明。可以理解的是,此处描述的具体实施例仅仅是为了解释本申请,而非对本申请的限定。此外,为了便于描述,附图中仅示出了与本申请相关的部分而非全部的结构或过程。
[0024] 本公开的说明性实施例包括但不限于树型结构的多集群间的路由控制方法、集群森林以及相应的系统和介质。
[0025] 将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说,使用部分所描述的特征来施行一些替代性实施例是显而易见的。出于解释的目的,阐述了具体的数字和配置,以便对说明性实施例进行更加透彻的理解。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实施替代实施例。在一些其他情况下,本文省略或简化了一些众所周知的特征,以避免使本申请的说明性实施例模糊不清。
[0026] 此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个彼此分离的操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖描述的顺序,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序也可以被重新安排。当所描述的操作完成时,所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0027] 说明书中对“一个实施例”,“实施例”,“说明性实施例”等的引用表示所描述的实施例可以包括特定特征、结构或性质,但是每个实施例也可能或不是必需包括特定的特征、结构或性质。而且,这些短语不一定是针对同一实施例。此外,当结合具体实施例描述特定特征,本领域技术人员的知识能够影响到这些特征与其他实施例的结合,无论这些实施例是否被明确描述。
[0028] 除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“A/B”表示“A或B”。短语“A和/或B”表示“(A)、(B)或(A和B)”。
[0029] 如本文所使用的,术语“模块”可以指代,作为其中的一部分,或者包括专用集成电路(ASIC)、电子电路、处理器(共享,专用或组)和/或存储器(共享,专用或组)。用于执行一个或多个软件或固件程序,组合逻辑电路和/或提供所述功能的其他合适组件。
[0030] 在附图中,可能以特定布置和/或顺序示出了一些结构或方法特征。然而,应当理解的是,这样的特定布置和/或排序不是必需的。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来进行说明。另外,特定附图中所包含得结构或方法特征并不意味着所有实施例都需要包含这样的特征,在一些实施例中,可以不包含这些特征或者可以与将这些特征与其他特征进行组合。
[0031] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
[0032] 图1示出了根据本申请的一些实施例的由多个集群组成的树型结构的集群森林的示意图。
[0033] 根据本申请的一些实施例,集群森林中可以包括多个集群,例如,图1中示出的集群森林100中包括21个集群A~U。集群森林100中的每个集群都被配置有配置信息,配置信息的示例如图2所示,其可以包括,但不限于:该集群的身份信息(Group_ID)、该集群的父集群的身份信息(Parent group_ID)、路由约束信息和集群内节点信息等中的任意一项或多项。
[0034] 下面结合图2介绍根据本申请的实施例的配置信息示例。
[0035] 根据本申请的一些实施例,配置信息可以包括集群的身份信息(Group_ID)和当前集群的父集群的身份信息(Parent group_ID)。
[0036] 集群的身份信息可以是该集群的物理地址、逻辑地址、序列号和集群名称等中的任意一项或多项,用于识别相应集群的身份。例如,在图2示出的示例中,集群的身份信息(Group_ID)可以采用该集群的名称作为身份信息,需要注意的是,集群名称在集群森林中必须是唯一的。
[0037] 同理,该集群的父集群的身份信息(Parent group_ID)也可以是该集群的父集群的物理地址、逻辑地址、序列号和集群名称等中的任意一项或多项,用于识别该集群所从属的上层集群。每个集群可以根据自己的身份信息和父集群的身份信息耦合到对应的上层集群。例如,在图2示出的示例中,该集群的身份信息为集群B,其父集群身份信息为集群A,那么,集群B便可以耦合到上层集群A,集群B是集群A的子集群(即,下层集群),集群A是集群B的父集群(即,上层集群)。
[0038] 根据配置信息中的身份信息和其父集群的身份信息,相互之间有从属关系的多个集群可以形成树型结构,例如,在图1示出的集群森林100中,集群A无父集群信息,则集群A为根集群(即,顶层集群);以A为父集群的集群B,C,S根据各自的配置信息与集群A耦合,并作为集群A的子集群;而以集群B为父集群的集群D、E与B耦合;以集群C为父集群的集群F、G、T分别与集群C耦合……最终,形成完整的集群森林100。
[0039] 集群的配置信息中包括自己的身份信息和父集群的身份信息可以方便集群耦合到对应的上层集群,并便于集群间的耦合关系的修改,在需要修改集群间的耦合关系时,只需要修改配置信息中的父集群信息即可。
[0040] 而根据本申请的另一些实施例,集群的配置信息中还可以包括子集群的身份信息,以与下层集群的配置信息中的父集群信息互相校验,但是在需要修改集群间的耦合关系时会略微复杂。
[0041] 根据本申请的一些实施例,配置信息中还可以包括路由约束信息,路由约束信息可以根据输入约束和/或输出约束的有无来设置,输入约束(inbound)和输出约束(outbound)分别限制集群中的节点接收信息和发送信息。其中,输入约束可以限制:集群中的节点接收信息时,集群从自己的父集群中接收的信息必须通过输入网关转发;而输出约束可以限制:集群中的节点发送信息时,从该集群向其子集群之外的集群发送的信息需要通过输出网关转发。在本申请中,输入约束和输出约束限制集群从其父集群接收信息和向父集群发送信息或者从同一父集群下的同层级集群收发信息,而不会限制集群从其子集群的接收或向其子集群的发送。
[0042] 路由约束信息可以包括路由约束类型和网关信息,其中,路由约束类型表示路由约束的类型,网关信息表示输入约束和输出约束的网关。
[0043] 那么,根据输入约束和/或输出约束的有无,路由约束类型最多可以配置4类,即:完全无约束、输入约束、输出约束和输入输出全约束。
[0044] 根据本申请的一些实施例,路由约束类型的具体类型和数量可以根据实际需要来进行不同配置。例如,路由约束类型可以只配置如下3类:完全无约束、输入约束和输入输出全约束;或者,根据本申请的另一些实施例,可以不允许完全无约束的路由,那么路由约束类型可以配置这3类:输入约束、输出约束和输入输出全约束;或者,根据本申请的又一些实施例,还可以配置更少数量的路由约束类型,等等。
[0045] 路由约束类型可以用各种方式来表示,举例来说,根据本申请的一些实施例,可以用数字0-3分别表示路由进出的4种类型,即:
[0046] 0-完全无约束,
[0047] 1-输入约束,
[0048] 2-输出约束,
[0049] 3-输入输出全约束。
[0050] 例如,在图2示出的示例中,集群B的路由约束类型为3,即,输入输出全约束,那么,集群从集群的子集群之外的集群中接收信息和从该集群向子集群之外的集群发送信息均需要通过相应的网关转发。
[0051] 根据本申请的一些实施例,路由约束类型也可以采用其他方式来表示,例如,可以用不同字母标记不同的路由约束类型。
[0052] 根据本申请的一些实施例,路由约束信息中的网关信息用于表示输入约束和输出约束的网关。例如,网关可以是集群内的多个节点中的一个,也可以额外采用节点之外的设备专门作为网关。根据本申请的一些实施例,如图2所示,可以分别设置输入约束和输出约束的路由信息和设备ID。在一些实施方式中,输入网关和输出网关可以位于不同设备上,也可以位于同一设备上。
[0053] 如图2所示,根据本申请的一些实施例,网关信息可以包括输入网关和输出网关各自的路由信息和设备ID,设备ID可以用设备的唯一名称、唯一编号等能够表征设备身份的信息来表示,而路由信息则可以采用“IP地址:端口号”的形式来表示。以上信息形式和格式仅仅是举例说明,在各种不同的实施例中,可以采用各种合适的方式来表征网关信息。
[0054] 根据本申请的一些实施例,节点信息也可以被安排在配置信息中,节点信息记录集群内的节点的信息,集群中的各个节点是相互独立但通过网络互联的设备,它们构成了一个群组,并以单一系统的模式加以管理,作为一个整体与外部通信。例如,如图3所示,集群B中可以包括7个节点:B1,B2,B3,B4,B5,B6,B7,对于每个节点都记录其路由信息和设备ID。
[0055] 对于树型结构的集群森林中的每个集群,根据图2所示的配置信息,可以以遍历方式计算其到达其他集群(或集群中的某一节点)的通信路径。其中,集群中的节点向其父集群发送数据或者从其父集群接收数据,或者同一父集群下的各同一层级的集群之间的通信会受到相应的路由约束信息影响,而集群向其子集群发送数据从其子集群接收数据则可以自由进行,不会受到相应的路由约束信息影响。
[0056] 例如,以图1所示的集群森林为例,根据本申请的一个实施例,若:
[0057] 集群A的配置信息中,路由约束类型为1(即,输入约束),且集群A设置了输入网关的设备ID为集群A中的节点A1的设备ID;
[0058] 集群B的配置信息中,路由约束类型为2(即,输出约束),且集群B设置了输入网关的设备ID为集群B中的节点B3的设备ID;
[0059] 集群D的配置信息中,路由约束类型为3(即,输入输出全约束),且集群D的输入网关的设备ID为集群D中的节点D5的设备ID,集群D输出网关的设备ID为节点D1的设备ID;
[0060] 集群E的配置信息中,路由约束类型为0(即,完全无约束),
[0061] 集群H的配置信息中,路由约束类型为1(即,输入约束),且集群H设置了输入网关的设备ID为集群H中的节点H2的设备ID。
[0062] (1)如果集群E中的节点E3要访问集群A中的节点A3,那么,由于集群E与A不是直接连接,需要通过集群B转发,由于集群E的路由约束类型为0(即,完全无约束),即数据可以自由进出集群E中的任何节点,那么,E3发出的数据可以直接发出,而集群B的输出受约束,那么,从集群B发出的数据需要通过其网关B3转发,而集群A虽然设置有输入约束,但是由于集群B是集群A的子集群,集群A从其子集群B接收数据并不受输入约束的影响,因此,节点E3访问节点A3的通信路径是:E3→B3→A3。
[0063] (2)如果集群D中的节点D7要访问集群H中的节点H7,那么,在上述配置中,虽然集群D输入输出全约束,但是,由于集群D是集群H的父集群,父集群发送给子集群的数据不会受父集群自身的路由约束信息约束,即,集群D中的节点发送给集群H的数据就不受集群D的路由约束信息的约束,但是要受集群H的路由约束信息的约束,因此,集群D中的节点D7访问节点H7的通信路由是:D7→H2→H7。
[0064] (3)如果集群E中的节点E3要访问集群H中的节点H7,由于集群E与H不是直接连接,而集群D和集群E是同属于同一父集群B下的同一层级的集群,那么,集群D和集群E可以直接通信,集群E完全无约束,集群D的输入网关是D5,那么,E3发出的数据可以直接发出,而集群D的接收的数据需要通过其网关D5转发,而从集群D到集群H是父集群对子集群的访问,不受约束,因此,节点E3访问节点H7的通信路由是:E3→D5→H2→H7。
[0065] 通过设置各个集群的配置信息,通过上层集群和自身集群的路由约束信息进行组合控制,实现了树形结构的集群森林中的节点的可控应用层路由。通过遍历森林中所有集群的方式,可以计算得到该集群森林内的各个集群或集群内的所述节点到达其余集群或集群内的节点的路径。遍历计算完毕后,森林中的集群的通信路径可以以路由表的形式保存下来,在后续通信中,可以直接使用。
[0066] 根据本申请的一些实施例,在执行遍历计算时,可以复用该树型结构中同一支路的其他集群的遍历结果。例如,在有新的集群加入该集群森林时,只需计算与其直接通信的集群之间的通信路径,与其直接通信的集群包括:其父集群、其子集群、与其一同属于同一父集群的其他同层级集群。再如,参照图1所示集群森林,集群B到达其余所有集群的通信路径已经计算完毕以后,计算集群E到达其余所有集群的通信路径时,可以向上找到其上层集群B,并遍历集群B的所有支路,而对于集群B再到其上层集群A以及到集群A后再通过集群A到除了集群B之外的其他支路的通信路径,则可以直接复用针对集群B的计算结果。
[0067] 图4示出了根据本申请的实施例的树型结构的多集群间的路由控制方法的流程图。
[0068] 如图4所示,树型结构的多集群间的路由控制方法,可以包括以下操作。
[0069] 首先,步骤S101,为多个集群中的每个集群分别设置配置信息,如上文所述,参见图2,配置信息可以包括:该集群的身份信息、该集群的父集群的身份信息、路由约束信息、网关和集群内节点信息等中的任意一项或多项,配置信息中的各项信息的详细解释此处不再赘述。
[0070] 集群的身份信息可以是该集群的物理地址、逻辑地址、序列号和集群名称等中的任意一项或多项,用于识别相应集群的身份。例如,在图2示出的示例中,集群的身份信息(Group_ID)可以采用该集群的名称作为身份信息,需要注意的是,集群名称在集群森林中必须是唯一的。同理,该集群的父集群的身份信息(Parent group_ID)也可以是该集群的父集群的物理地址、逻辑地址、序列号和集群名称等中的任意一项或多项,用于识别该集群所从属的上层集群。每个集群可以根据自己的身份信息和父集群的身份信息耦合到对应的上层集群。例如,在图2示出的示例中,该集群的身份信息为集群B,其父集群身份信息为集群A,那么,集群B便可以耦合到上层集群A,集群B是集群A的子集群(即,下层集群),集群A是集群B的父集群(即,上层集群)。
[0071] 根据本申请的一些实施例,配置信息中的路由约束信息可以根据输入约束和/或输出约束的有无来设置。其中,输入约束可以限制:集群中的节点接收信息时,集群从自己的父集群中接收的信息必须通过输入网关转发;而输出约束可以限制:集群中的节点发送信息时,从该集群向其子集群之外的集群发送的信息需要通过输出网关转发。在本申请中,输入约束和输出约束限制集群从其父集群接收信息和向父集群发送信息或者从同一父集群下的同层级集群收发信息,而不会限制集群从其子集群的接收或向其子集群的发送。
[0072] 路由约束信息可以包括路由约束类型和网关信息,其中,路由约束类型表示路由约束的类型,网关信息表示输入约束和输出约束的网关。
[0073] 那么,根据输入约束和/或输出约束的有无,路由约束类型最多可以配置4类,即:完全无约束、输入约束、输出约束和输入输出全约束。根据本申请的一些实施例,路由约束类型的具体类型和数量可以根据实际需要来进行不同配置。例如,路由约束类型可以只配置如下3类:完全无约束、输入约束和输入输出全约束;或者,根据本申请的另一些实施例,可以不允许完全无约束的路由,那么路由约束类型可以配置这3类:输入约束、输出约束和输入输出全约束;或者,根据本申请的又一些实施例,还可以配置更少数量的路由约束类型,等等。路由约束类型可以用各种方式来表示,例如,可以用上文所述的数字或字母等来标记不同的路由约束类型。
[0074] 路由约束信息中的网关信息用于表示输入约束和输出约束的网关。例如,网关可以是集群内的多个节点中的一个,也可以额外采用节点之外的设备专门作为网关。根据本申请的一些实施例,如图2所示,可以分别设置输入约束和输出约束的路由信息和设备ID。在一些实施方式中,输入网关和输出网关可以位于不同设备上,也可以位于同一设备上。
[0075] 如图2所示,根据本申请的一些实施例,网关信息可以包括输入网关和输出网关各自的路由信息和设备ID,设备ID可以用设备的唯一名称、唯一编号等能够表征设备身份的信息来表示,而路由信息则可以采用“IP地址:端口号”的形式来表示。以上信息形式和格式仅仅是举例说明,在各种不同的实施例中,可以采用各种合适的方式来表征网关信息。
[0076] 根据本申请的一些实施例,节点信息也可以被安排在配置信息中,节点信息记录集群内的节点的信息,集群中的各个节点是相互独立但通过网络互联的设备,它们构成了一个群组,并以单一系统的模式加以管理,作为一个整体与外部通信。例如,如图3所示,集群B中可以包括7个节点:B1,B2,B3,B4,B5,B6,B7,对于每个节点都记录其路由信息和设备ID。
[0077] 随后,步骤S102,根据配置信息中的身份信息和父集群的身份信息,相互之间有从属关系的多个集群可以形成树型结构的集群森林,例如,在图1示出的集群森林100中,集群A无父集群信息,则集群A为根集群(即,顶层集群);以A为父集群的集群B,C,S根据各自的配置信息与集群A耦合,并作为集群A的子集群;而以集群B为父集群的集群D、E与B耦合;以集群C为父集群的集群F、G、T分别与集群C耦合……最终,形成完整的集群森林100。
[0078] 集群的配置信息中包括自己的身份信息和父集群的身份信息可以方便集群耦合到对应的上层集群,并便于集群间的耦合关系的修改,在需要修改集群间的耦合关系时,只需要修改配置信息中的父集群信息即可。
[0079] 而根据本申请的另一些实施例,集群的配置信息中还可以包括子集群的身份信息,以与下层集群的配置信息中的父集群信息互相校验,但是在需要修改集群间的耦合关系时会略微复杂。
[0080] 步骤S103,根据图2所示的配置信息中的路由约束信息,可以以遍历方式计算集群森林中的各个集群(或集群中的某一节点)与其他集群(或集群中的某一节点)之间的通信路径。其中,集群中的节点向其父集群发送数据或者从其父集群接收数据,或者同一父集群下的各同一层级的集群之间的通信会受到相应的路由约束信息影响,而集群向其子集群发送数据从其子集群接收数据则可以自由进行,不会受到相应的路由约束信息影响。具体的集群间的通信路由示例可以参见上文中结合图1的描述。
[0081] 通过设置各个集群的配置信息,通过上层集群和自身集群的路由约束信息进行组合控制,实现了树形结构的集群森林中的节点的可控应用层路由。通过遍历森林中所有集群的方式,可以计算得到该集群森林内的各个集群或集群内的所述节点到达其余集群或集群内的节点的路径。遍历计算完毕后,森林中的集群的通信路径可以以路由表的形式保存下来,在后续通信中,可以直接使用。
[0082] 根据本申请的一些实施例,在执行步骤S103时,树型结构中同一支路的集群的遍历结果可以复用。例如,在有新的集群加入该集群森林时,只需计算与其直接通信的集群之间的通信路径,与其直接通信的集群包括:其父集群、其子集群、与其一同属于同一父集群的其他同层级集群。再如,参照图1所示集群森林,集群B到达其余所有集群的通信路径已经计算完毕以后,计算集群E到达其余所有集群的通信路径时,可以向上找到其上层集群B,并遍历集群B的所有支路,而对于集群B再到其上层集群A以及到集群A后再通过集群A到除了集群B之外的其他支路的通信路径,则可以直接复用针对集群B的计算结果。
[0083] 在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合形式来实现。所公开的实施例还可以以承载或储存在一个或多个瞬态或非瞬态的机器可读(例如,计算机可读)存储介质上的指令或程序形式实现,其可以由一个或多个处理器等读取和执行。当指令或程序被机器运行时,机器可以执行前述的路由控制方法。例如,指令可以通过网络或其他计算机可读介质分发。因此,机器可读介质可以包括但不限于,用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,例如,软盘,光盘,光盘只读存储器(CD-ROMs),磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电子式可清除程序化只读存储器(EEPROM),磁卡或光卡,或者用于通过电、光、声或其他形式信号(例如,载波、红外信号、数字信号等)传输网络信息的闪存或有形的机器可读存储器。因此,机器可读介质包括任何形式的适合于存储或传输电子指令或机器(例如,计算机)可读信息的机器可读介质。
[0084] 根据本申请的另一个实施例,还提供了一种系统,包括:存储器和处理器,存储器中存储有指令,处理器用于读取所述存储器中的指令,以执行前述路由控制方法。
[0085] 上面结合附图对本申请的实施例做了详细说明,但本申请技术方案的使用不仅仅局限于本专利实施例中提及的各种应用,各种结构和变型都可以参考本申请技术方案轻易地实施,以达到本文中提及的各种有益效果。在本领域普通技术人员所具备的知识范围内,在不脱离本申请宗旨的前提下做出的各种变化,均应归属于本申请专利涵盖范围。