信息同步方法及相关设备与流程

文档序号:24160556发布日期:2021-03-05 16:15阅读:75来源:国知局
信息同步方法及相关设备与流程

[0001]
本申请涉及人工智能领域,尤其涉及一种信息同步方法及相关设备。


背景技术:

[0002]
深度神经网络是近几年机器学习领域的流行话题,在许多任务上取得了先进的成果。由于深度神经网络算法的执行需要较多的计算资源,因此通常采用计算集群完成计算任务。然而,当集群中的运算节点出现故障时,会导致计算任务不能顺利完成。


技术实现要素:

[0003]
本申请实施例提供一种信息同步方法及相关设备,有利于计算任务的顺利进行。
[0004]
第一方面,本申请实施例提供一种信息同步方法,方法包括:
[0005]
基于n个节点建立目标双向环形链路,以及在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息,所述配置信息包括第一配置信息和第二配置信息,所述第一配置信息包括节点的属性信息,所述第二配置信息包括所述目标双向环形链路中每个节点的地址;
[0006]
基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步,所述目标节点用于确定所述目标双向环形链路中的掉线节点和/或添加到所述目标双向环形链路中的新增节点。
[0007]
第二方面,本申请实施例提供一种信息同步装置,装置包括:
[0008]
建立单元,用于基于n个节点建立目标双向环形链路;
[0009]
确定单元,用于在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息,所述配置信息包括第一配置信息和第二配置信息,所述第一配置信息包括节点的属性信息,所述第二配置信息包括所述目标双向环形链路中每个节点的地址;
[0010]
同步单元,用于基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步,所述目标节点用于确定所述目标双向环形链路中的掉线节点和/或添加到所述目标双向环形链路中的新增节点。
[0011]
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面所述的方法中的步骤的指令。
[0012]
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。
[0013]
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
[0014]
可以看出,在本申请实施例中,首先基于n个节点建立目标双向环形链路,然后再基于目标双向环形链路中的目标节点对目标双向环形链路中节点的配置信息进行同步,由于目标节点用于确定目标双向环形链路中的掉线节点和/或添加到目标双向环形链路中的新增节点,因此基于目标节点对目标双向环形链路中节点的配置信息进行同步,可以使其他节点对配置信息进行更新,避免了运算中断,有利于运算的正常进行。
附图说明
[0015]
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016]
图1是本申请实施例提供的一种信息同步方法的流程示意图;
[0017]
图2本申请实施例提供的另一种电子设备的结构示意图;
[0018]
图3本申请实施例提供的一种信息同步装置的结构示意图。
具体实施方式
[0019]
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0020]
以下分别进行详细说明。
[0021]
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0022]
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0023]
下面对本申请实施例进行详细介绍。
[0024]
如图1所示,本申请实施例提供的一种信息同步方法,具体包括以下步骤:
[0025]
步骤101:基于n个节点建立目标双向环形链路,以及在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息,所述配置信息包括第一配置信息和第二配置信息,所述第一配置信息包括节点的属性信息,所述第二配置信息包括目标双向环形链路中每个节点的地址。
[0026]
其中,在建立目标双向环形链路的过程中,加入一个节点以及确定该节点对应的配置信息后,再加入新的节点。
[0027]
其中,节点未加入目标双向环形链路之前,节点的配置信息为空。
[0028]
其中,n个节点中每个节点确定配置信息的方法相同。
[0029]
其中,目标双向环形链路中每个节点的第二配置信息相同。
[0030]
其中,在建立目标双向环形链路之后,可以在目标双向环形链路中添加节点。
[0031]
其中,目标双向环形链路建立之后,目标双向环形链路中的节点可能会掉线。
[0032]
其中,掉线的节点由恢复模块进行回收,并由恢复模块周期性的添加到掉线的节点之前所在的双向环形链路中。
[0033]
其中,在建立目标双向环形链路之后,若向目标双向环形链路中添加节点,则添加节点的配置信息的确定方法,与确定n个节点中每个节点的配置信息的方法相同。
[0034]
其中,目标双向环形链路建立之后,向目标双向环形链路中添加的节点可以是集群外的节点,也可以是从目标双向环形链路中掉线的节点。
[0035]
其中,属性信息包括键、键值、更新时间、栈高度、上游邻节点的地址以及下游邻节点的地址,键和键值为关联关系。
[0036]
举例来说,假如目标双向环形链路中包括3个节点(a、b以及c),其中,目标双向环形链路为a-b-c-a,a的地址为d1、b的地址为d2、c的地址为d3,a的更新时间为10:20am,b的更新时间为10:22am,c的更新时间为10:23am,a的栈高度为3,b的栈高度为2,c的栈高度为1,键为序列号,节点a的序列号为1,b的序列号为2,c的序列号为3,则节点a的属性信息包括:{序列号:1;10:20am;3;d3,d2},节点b的属性信息包括:{序列号:2;10:22am;2;d1、d3},节点c的属性信息包括:{序列号:3;10:23am;1;d2、d1}。
[0037]
步骤102:基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步,所述目标节点用于确定所述目标双向环形链路中的掉线节点和/或添加到所述目标双向环形链路中的新增节点。
[0038]
其中,目标节点是在目标双向环形链路中随机选择的具有上游邻接点和下游邻接点的节点。
[0039]
其中,目标节点可以用于确定目标双向环形链路中的掉线节点,然后对目标双向环形链路中节点的第一配置信息和/或第二配置信息进行更新;也可以用于确定目标双向环形链路中的新增节点,然后对目标双向环形链路中节点的配置信息进行更新;也可以仅用于对目标双向环形链路中节点的第一配置信息进行更新。
[0040]
可以看出,在本申请实施例中,首先基于n个节点建立目标双向环形链路,然后再基于目标双向环形链路中的目标节点对目标双向环形链路中节点的配置信息进行同步,由于目标节点用于确定目标双向环形链路中的掉线节点和/或添加到目标双向环形链路中的新增节点,因此基于目标节点对目标双向环形链路中节点的配置信息进行同步,可以使其他节点对配置信息进行更新,避免了运算中断,有利于运算的正常进行。
[0041]
在本申请的一实现方式中,每个所述属性信息均包括第三配置信息和第四配置信息,所述第三配置信息包括下游邻节点的地址和上游邻节点的地址;
[0042]
所述基于n个节点建立目标双向环形链路,以及在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息,包括:
[0043]
步骤11:将第一节点加入第一链表,得到所述第一节点的下游邻节点的地址和上游邻节点的地址,以得到所述第一节点的第三配置信息,所述第一节点为所述n个节点中的
其中一个;
[0044]
步骤12:将所述第一节点的下游邻节点的第三配置信息中的上游邻节点的地址更新为所述第一节点的地址,以及将所述第一节点的上游邻节点的第三配置信息中的下游邻节点的地址更新为所述第一节点的地址;
[0045]
步骤13:连接所述第一链表的表头和所述第一链表的表尾得到子双向环形链路;
[0046]
步骤14:基于所述第一节点在所述子双向环形链路中的位置确定所述第一节点的第四配置信息;
[0047]
步骤15:基于第一处理策略确定所述第一节点的第二配置信息;
[0048]
重复步骤11-15直至所述n个节点中的每个节点都作为第一节点,以得到所述目标双向环形链路和所述n节点中每个节点的配置信息。
[0049]
其中,第一链表中每加入一个节点便得到一个子双向环形链路,在n个节点均加入到第一链表后便得到目标双向环形链路。
[0050]
其中,第一链表中节点的先后顺序是按照节点放入第一链表的时间确定的。
[0051]
其中,第一链表的表头为最先放入第一链表的节点,第一链表的表尾为最晚放入第一链表的节点。
[0052]
其中,将第一节点添加到第一链表的表尾。
[0053]
其中,若第一链表仅包括一个节点,则该节点的下游邻接点的地址和上游邻接点的地址均为该节点的地址。
[0054]
其中,每个节点的下游邻接点和上游邻接点的地址不同。
[0055]
其中,不同节点的上游邻接点不同,不同节点的下游邻接点不同。
[0056]
其中,每个节点仅有一个上游邻接点和一个下游邻接点。
[0057]
举例来说,若第一链表中包括3个节点(节点1、节点2以及节点3),其中,节点1为第一链表的表头,节点3为第一链表的表尾,节点1和节点3连接得到双向环形链路:节点1—节点2—节点3—节点1。假设节点1的地址为a,节点2的地址为b,节点3的地址为c,则节点1的第三配置信息为(c,b),节点2的第三配置信息为(a,c),节点3的第三配置信息为(b,a)。若将节点4加入第一链表中,节点4的地址为d,则可确定节点4的上游邻接点的地址为c,下游邻接点的地址为a,得到节点4的第三配置信息为(c,a),并将节点3的第三配置信息中的下游邻接点的地址更新为节点4的地址,因此节点3的第三配置信息为(b,d),以及将节点1的第三配置信息中上游邻接点的地址更新为节点4的地址,因此节点1的第三配置信息为(d,b)。
[0058]
其中,子双向环形链路中节点的第二配置信息相同。
[0059]
可以看出,在本申请实施例中,加入节点后确定节点的配置信息,有利于避免双向环形链路中节点的配置信息不正确的问题。
[0060]
在本申请的一实现方式中,所述第四配置信息包括键、键值、更新时间以及栈高度;所述基于所述第一节点在所述双向环形链路中的位置确定所述第一节点的第四配置信息,包括:
[0061]
若所述第一节点为所述第一链表的表头,则确定所述第一节点的第四配置信息为预设配置信息,所述预设配置信息包括预设键值、预设更新时间以及预设栈高度;
[0062]
若所述第一节点不为所述第一链表的表头,则基于第二处理策略确定所述第一节
点的第四配置信息。
[0063]
其中,键值为预设键值,更新时间为预设更新时间,栈高度为预设栈高度。
[0064]
其中,预设键值可以是0,也可以是其他值。
[0065]
其中,预设栈高度可以是0,也可以是其他值。
[0066]
其中,键值用于表示更新时间更新为当前时间的次数。
[0067]
其中,栈高度用于表示第四配置信息更新的次数。
[0068]
可以看出,在本申请实施例中,基于第一节点在第一链表中的位置,确定第一节点的第四配置信息,有利于提升第一节点的第四配置信息的正确性。
[0069]
在本申请的一实现方式中,所述第二处理策略用于指示:
[0070]
在所述子双向环形链路中确定第二节点;
[0071]
将所述第二节点的第四配置信息的更新时间更新为当前时间,栈高度加一以及键值加一;
[0072]
将所述第二节点的第四配置信息发送给第三节点,所述子双向环形链路包括所述第三节点,所述第三节点为所述第二节点的下游邻节点;
[0073]
若所述第二节点的第四配置信息中的时间大于所述第三节点的第四配置信息中的时间,则基于所述第二节点中的第四配置信息确定所述第三节点中的第四配置信息,以及将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点;
[0074]
若所述第二节点的第四配置信息中的时间小于所述第三节点的第四配置信息中的时间,则确定所述第三节点的第四配置信息不变,以及将第四节点作为所述第二节点,所述第二节点作为所述第三节点,所述第三节点作为所述第四节点;
[0075]
若所述第二节点的第四配置信息中的时间等于所述第三节点的第四配置信息中的时间,则基于所述第二节点的第四配置信息中的栈高度和所述第三节点的第四配置信息中的栈高度,确定所述第三节点的第四配置信息;
[0076]
直至所述子双向环形链路中的第一节点被作为第三节点,所述第一节点的上游邻节点被作为第二节点,以确定所述第一节点的第四配置信息。
[0077]
其中,第二处理策略还用于对目标双向环形链路中的节点的第四配置信息进行更新。
[0078]
其中,第一节点加入子双向环形链路中,且未执行第二处理策略之前,第四配置信息为空。
[0079]
其中,第二节点为在子双向环形链路中随机选择的具有上游邻接点和下游邻接点的节点。
[0080]
其中,基于所述第二节点中的第四配置信息确定所述第三节点中的第四配置信息是将第二节点的第四配置信息中的键值、栈高度以及更新时间更新到第三节点的第四配置信息中。
[0081]
举例来说,若子双向环形链路中包括4和节点(节点1、节点2、节点3以及节点4),子双向环形链路为节点1—节点2—节点3—节点4—节点1,其中节点4为新加入的第一节点。其中,节点1的第四配置信息为(key:4;08:23:24am;5),节点2的第四配置信息为(key:3;08:23:45am;4),节点3的第四配置信息为(key:3;08:24:12am;3),节点4的第四配置信息为空。假设将节点2的第四配置信息的更新时间更新为当前时间,栈高度加1以及键值加1,则
节点2的配置信息为(key:4;08:30:40am;5)。将节点2的第四配置信息发送给节点3,由于节点3的第四配置信息中的时间小于节点2的第四配置信息中的时间,因此确定将节点2的第四配置信息中的更新时间、栈高度以及键值更新到节点3的第四配置信息中,节点3的配置信息为(key:4;08:30:40am;5)。然后,将节点3的第四配置信息发送给节点4,由于节点4的第四配置信息中的时间小于节点3的第四配置信息中的时间,则将节点3的第四配置信息中的更新时间、栈高度以及键值更新到节点4的第四配置信息中。
[0082]
举例来说,若子双向环形链路中包括节点1、节点2、节点3以及节点4,子双向环形链路为节点1—节点2—节点3—节点4—节点1,其中节点4为新加入的第一节点。其中,节点1的第四配置信息为(key:4;08:23:24am;5),节点2的第四配置信息为(key:3;08:25:45am;4),节点3的第四配置信息为(key:3;08:24:12am;3),节点4的第四配置信息为空。假设将节点1的第四配置信息的更新时间更新为当前时间,栈高度加1以及键值加1,则节点1的配置信息为(key:4;08:24:40am;6)。将节点1的第四配置信息发送给节点2,由于节点2的第四配置信息中的时间晚于节点1的第四配置信息中的时间,因此节点2的第四配置信息保持不变,并将节点2的第四配置信息发送给节点1。由于节点1的第四配置信息中的时间晚(时间通常比较早或晚,大小不好比较)于节点2的第四配置信息中的时间,因此将节点2的第四配置信息中的更新时间、栈高度以及键值更新到节点1的第四配置信息中,节点1的配置信息为(key:4;08:25:45am;4)。然后,将节点1的第四配置信息发送给节点4,由于节点4的第四配置信息为空,则将节点1的第四配置信息中的更新时间、栈高度以及键值更新到节点4的第四配置信息中。
[0083]
其中,节点的下游邻节点和上游邻接点是按照顺时针的方向进行定义。
[0084]
其中,在将第四节点作为第二节点,第二节点作为第三节点,第三节点作为第四节点之后,上游邻接点和下游邻接点基于逆时针方向定义。
[0085]
其中,第四节点用于改变第二节点和第三节点的上下游节点关系。
[0086]
举例来说,子双向环形链路包括3个节点(节点1、节点2以及节点3),子环形链路为节点1—节点2—节点3—节点1,按照顺时针方向,节点1的上游邻接点为节点3,下游邻接点为节点2,节点2的上游邻节点为节点1,下游邻接点为节点3,节点3的上游邻接点为节点2,下游邻接点为节点1。按照逆时针方向,节点1的上游邻接点为节点2,下游邻接点为节点3,节点2的上游邻接点为节点3,下游邻接点为节点1,节点3的上游邻接点为节点1,下游邻接点为节点2。
[0087]
可以看出,在子双向环形链路中随机选择一个节点作为第二节点,有利于提升确定第一节点的第四配置信息的灵活性。
[0088]
在本申请的一实现方式中,所述基于所述第二节点的第四配置信息中的栈高度和所述第三节点的第四配置信息中的栈高度,对所述第三节点的第四配置信息进行更新,包括:
[0089]
若所述第二节点的第四配置信息中的栈高度大于所述第三节点的第四配置信息中的栈高度,则基于所述第二节点中的第四配置信息确定所述第三节点的第四配置信息,以及将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点;
[0090]
若所述第二节点的第四配置信息中的栈高度小于所述第三节点的第四配置信息中的栈高度,则将第四节点作为所述第二节点,所述第二节点作为所述第三节点,所述第三
节点作为所述第四节点;
[0091]
若所述第二节点的第四配置信息中的栈高度等于所述第三节点的第四配置信息中的栈高度,则将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点。
[0092]
其中,在将第四节点作为第二节点,第二节点作为第三节点,第三节点作为第四节点之后,节点的下游邻节点和上游邻接点是按照逆时针的方向进行定义。
[0093]
可以看出,在本申请实施例中,在第二节点的第四配置信息中的更新时间和第三节点的第四配置信息中的更新时间相等的情况下,基于第二节点的第四配置信息中的栈高度和第三节点的第四配置信息中栈高度,确定第三节点的第四配置信息,有利于提升确定第一节点的第四配置信息的准确性。
[0094]
在本申请的以实现方式中,所述第一处理策略用于指示:
[0095]
步骤21:在所述子环形链路中确定第五节点;
[0096]
步骤22:基于所述第五节点的第三配置信息,发送第一数据包给所述第五节点的下游邻节点,所述第一数据包包括所述第五节点的地址;
[0097]
步骤23:基于所述第五节点接收到的来自所述第五节点的上游邻节点的第二数据包,确定所述第五节点的第二配置信息,所述第二数据包包括转发所述第一数据包的节点的地址;
[0098]
步骤24:基于所述第五节点的第三配置信息,发送第三数据包给所述第五节点的下游邻节点,以及将所述第五节点的下游邻节点作为第五节点,所述第三数据包包括所述第五节点的第二配置信息;
[0099]
重复步骤24直至所述第一节点的上游邻节点被作为第五节点,并基于所述第一节点接收到所述第一节点的上游邻节点发送的所述第三数据包,确定所述第一节点的第二配置信息。
[0100]
其中,第五节点是在子双向环形链路中随机确定的具有上游邻接点和下游邻接点的节点。
[0101]
举例来说,若子双向环形链路包括4个节点(#1、#2、#3以及#4),其中子双向环形链路为#1—#2—#3—#4—#1。假设第五节点为#2,首先#2将第一数据包发送给#3,第一数据包包括#2的地址;#3在接收到第一数据包之后,将地址写入第一数据包,此时第一数据包包括#2的地址和#3的地址,再然后将第一数据包发送给#4,#4在接收到第一数据包之后将地址写入第一数据包,此时第一数据包包括#2的地址、#3的地址以及#4的地址,再然后#4将第一数据包发送给#1;#1在接收到第一数据包之后将地址写入第一数据包,此时第一数据包包括#2、#3、#4以及#1的地址,最后#1将第一数据包发送给#2。由于#2接收到的第一数据包中包括子双向环形链路中每个节点的地址,因此确定可以#2的第二配置信息。
[0102]
可以看出,在本申请实施例中,在子双向环形链路中随机选择第五节点,有利于提升确定第二配置信息的灵活性。
[0103]
在本申请的一实现方式中,所述目标节点用于在所述目标双向环形链路中确定掉线节点;所述基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步,包括:
[0104]
基于所述目标节点的第三配置信息,向所述目标节点的下游邻节点发送第四数据包,所述第四数据包包括所述目标节点的地址;
[0105]
若所述目标节点接收到来自所述目标节点的下游邻接点的第五数据包,则向所述目标节点的上游邻接点发送第六数据包,所述第六数据包包括所述目标节点的地址,所述第五数据包包括转发所述第二数据包的节点的地址;
[0106]
基于所述第五数据包和所述目标节点接收到的来自所述目标节点的上游邻接点的第七数据包,确定掉线节点,所述第七数据包包括转发所述第六数据包的节点的地址;
[0107]
基于所述掉线节点对所述目标节点的第二配置信息进行更新,以及生成目标数据包,所述目标数据包包括更新后的所述目标节点的第二配置信息;
[0108]
基于所述目标节点的第三配置信息向所述目标节点的下游邻节点发送所述目标数据包,以及确定所述目标节点的下游邻节点为目标节点,所述目标数据包用于所述目标双向环形链路中的节点对配置信息进行更新;重复此步骤,直至对所述目标双向环形链路中所有的节点第二配置信息进行更新。
[0109]
其中,目标节点是在目标双向环形链路中随机选择的具有上游邻接点和下游邻接点的节点。
[0110]
其中,若有节点从目标双向环形链路中掉线,则目标双向环形链路中未掉线的节点均需要更新第二配置信息。
[0111]
其中,掉线节点的上游邻接点和下游邻接点需要对第三配置信息进行更新。
[0112]
举例来说,若目标双向环形链路包括5个节点(#1、#2、#3、#4以及#5),目标双向环形链路中每个节点的第二配置信息均包括#1、#2、#3、#4以及#5的地址,目标双向环形链路为#1—#2—#3—#4—#5—#1。若节点#2从目标双向环形链路中掉线,#4为目标节点。首先#4向#5发送第四数据包,第四数据包中包括#4的地址;#5在接收到第四数据包之后将#5地址写入第四数据包,第四数据包包括#3和#4的地址,然后#5将第四数据包发送给#1;#1在接收到第四数据包之后将#1的地址写入第四数据包,第四数据包包括#3、#4以及#5的地址,然后#1将第四数据包发送给#2,由于#1发送给#2的数据包不可达,因此#1将第五数据包发送给#5,第五数据包为包括#3、#4以及#5的地址的第四数据包,#5将第五数据包转发给#4。由于#4接收到来自#5的第五数据包,因此#4向#3发送第六数据包,第六数据包包括#4的地址;#3在接收到第六数据包之后将#3的地址写入第六数据包,第六数据包包括#3和#4的地址,然后#3向#2发送第六数据包。由于#3向#2发送第六数据包不可达,因此#3将第七数据包发送给#4,第七数据包为包括#3和#4的地址的第六数据包。#4基于第五数据包和第七数据包,确定掉线节点为#2,因此#4的第二配置信息包括#1、#3、#4以及#5的地址。
[0113]
举例来说,若目标双向环形链路包括5个节点(#1、#2、#3、#4以及#5),目标双向环形链路为#1—#2—#3—#4—#5—#1。由于#4为目标节点,#2为掉线节点,因此#4的第二配置信息包括#1、#3、#4以及#5的地址,#1、#3以及#5的第二配置信息均包括#1、#2、#3、#4以及#5的地址。#4将目标数据包发送给#5,目标数据包包括#4的第二配置信息。#5接收到目标数据包之后,基于目标数据包对#5的第二配置信息进行更新,因此#5的第二配置信息包括#1、#3、#4以及#5的地址;#5将目标数据包发送给#1,#1接收到目标数据包之后,将第三配置信息中的下游邻节点的地址更新为#3的地址,并将第二配置信息进行更新,因此#1的第二配置信息包括#1、#3、#4以及#5的地址;#1将目标数据包发送给#3,#3在接收到目标数据包之后,将第三配置信息中的上游邻节点的地址更新为#1的地址,并将第二配置信息进行更新,因此#3的第二配置信息包括#1、#3、#4以及#5的地址。
[0114]
其中,掉线节点由恢复模块进行回收,并由恢复模块周期性的添加到目标双向环形链路中。
[0115]
其中,若目标节点用于确定目标双向环形链路中的新增节点,则采用第一处理策略确定新增节点。
[0116]
其中,新增节点可以是集群外的节点,也可以是从目标双向环形链路中掉线的节点。
[0117]
其中,将新增节点添加到目标双向环形链路,是将新增节点添加到目标双向环形链路对应的第一链表的末尾。此外,确定新增节点的配置信息的方法,与建立目标双向环形链路的过程中确定节点的配置信息的方法相同,在目标双向环形链路中确定新增节点采用第一处理策略。
[0118]
其中,若目标节点用于对目标双向环形链路中的节点的第四配置信息进行更新,则采用第二处理策略对目标双向环形链路中的节点的第四配置信息进行更新。
[0119]
其中,在建立目标双向环形链路的过程中,若出现节点掉线的情况,也可采用以上方法确定掉线节点。
[0120]
可以看出,在本申请实施例中,通过目标节点对目标双向环形链路中所有节点的配置信息进行更新,有利于计算任务的顺利进行。
[0121]
需要说明的是,本实施例的具体实现过程可参见上述方法实施例所述的具体实现过程,在此不再叙述。
[0122]
与上述图1所示的实施例一致的,请参阅图2,图2是本申请实施例提供的一种电子设备的结构示意图,如图所示,该电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行以下步骤的指令:
[0123]
基于n个节点建立目标双向环形链路,以及在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息,所述配置信息包括第一配置信息和第二配置信息,所述第一配置信息包括节点的属性信息,所述第二配置信息包括目标双向环形链路中每个节点的地址;
[0124]
基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步,所述目标节点用于确定所述目标双向环形链路中的掉线节点和/或添加到所述目标双向环形链路中的新增节点。
[0125]
在本申请的一实现方式中,每个所述属性信息均包括第三配置信息和第四配置信息,所述第三配置信息包括下游邻节点的地址和上游邻节点的地址;在基于n个节点建立目标双向环形链路,以及在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息方面,上述程序包括用于执行以下步骤的指令:
[0126]
步骤11:将第一节点加入第一链表,得到所述第一节点的下游邻节点的地址和上游邻节点的地址,以得到所述第一节点的第三配置信息,所述第一节点为所述n个节点中的其中一个;
[0127]
步骤12:将所述第一节点的下游邻节点的第三配置信息中的上游邻节点的地址更新为所述第一节点的地址,以及将所述第一节点的上游邻节点的第三配置信息中的下游邻节点的地址更新为所述第一节点的地址;
[0128]
步骤13:连接所述第一链表的表头和所述第一链表的表尾得到子双向环形链路;
[0129]
步骤14:基于所述第一节点在所述子双向环形链路中的位置确定所述第一节点的第四配置信息;
[0130]
步骤15:基于第一处理策略确定所述第一节点的第二配置信息;
[0131]
重复步骤11-15直至所述n个节点中的每个节点都作为第一节点,以得到所述目标双向环形链路和所述n节点中每个节点的配置信息。
[0132]
在本申请的一实现方式中,所述第四配置信息包括键、键值、更新时间以及栈高度;在基于所述第一节点在所述双向环形链路中的位置确定所述第一节点的第四配置信息方面,上述程序包括具体用于执行以下步骤的指令:
[0133]
若所述第一节点为所述第一链表的表头,则确定所述第一节点的第四配置信息为预设配置信息,所述预设配置信息包括预设键值、预设更新时间以及预设栈高度;
[0134]
若所述第一节点不为所述第一链表的表头,则基于第二处理策略确定所述第一节点的第四配置信息。
[0135]
在本申请的一实现方式中,所述第二处理策略用于指示:
[0136]
在所述子双向环形链路中确定第二节点;
[0137]
将所述第二节点的第四配置信息的更新时间更新为当前时间,栈高度加一以及键值加一;
[0138]
将所述第二节点的第四配置信息发送给第三节点,所述子双向环形链路包括所述第三节点,所述第三节点为所述第二节点的下游邻节点;
[0139]
若所述第二节点的第四配置信息中的时间大于所述第三节点的第四配置信息中的时间,则基于所述第二节点中的第四配置信息确定所述第二节点中的第四配置信息,以及将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点;
[0140]
若所述第二节点的第四配置信息中的时间小于所述第三节点的第四配置信息中的时间,则确定所述第三节点的第四配置信息不变,以及将第四节点作为所述第二节点,所述第二节点作为所述第三节点,所述第三节点作为所述第四节点;
[0141]
若所述第二节点的第四配置信息中的时间等于所述第三节点的第四配置信息中的时间,则基于所述第二节点的第四配置信息中的栈高度和所述第三节点的第四配置信息中的栈高度,确定所述第三节点的第四配置信息;
[0142]
直至所述子双向环形链路中的第一节点被作为第三节点,所述第一节点的上游邻节点被作为第二节点,以确定所述第一节点的第四配置信息。
[0143]
在本申请的一实现方式中,在基于所述第二节点的第四配置信息中的栈高度和所述第三节点的第四配置信息中的栈高度,确定所述第三节点的第四配置信息方面,上述程序包括具体用于执行以下步骤的指令:
[0144]
若所述第二节点的第四配置信息中的栈高度大于所述第三节点的第四配置信息中的栈高度,则基于所述第二节点中的第四配置信息确定所述第三节点的第四配置信息,以及将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点;
[0145]
若所述第二节点的第四配置信息中的栈高度小于所述第三节点的第四配置信息中的栈高度,则将第四节点作为所述第二节点,所述第二节点作为所述第三节点,所述第三节点作为所述第四节点;
[0146]
若所述第二节点的第四配置信息中的栈高度等于所述第三节点的第四配置信息中的栈高度,则将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点。
[0147]
在本申请的一实现方式中,所述第一处理策略用于指示:
[0148]
步骤21:在所述子环形链路中确定第五节点;
[0149]
步骤22:基于所述第五节点的第三配置信息,发送第一数据包给所述第五节点的下游邻节点,所述第一数据包包括所述第五节点的地址;
[0150]
步骤23:基于所述第五节点接收到的来自所述第五节点的上游邻节点的第二数据包,确定所述第五节点的第二配置信息,所述第二数据包包括转发所述第一数据包的节点的地址;
[0151]
步骤24:基于所述第五节点的第三配置信息,发送第三数据包给所述第五节点的下游邻节点,以及将所述第五节点的下游邻节点作为第五节点,所述第三数据包包括所述第五节点的第二配置信息;
[0152]
重复步骤24直至所述第一节点的上游邻节点被作为第五节点,并基于所述第一节点接收到所述第一节点的上游邻节点发送的所述第三数据包,确定所述第一节点的第二配置信息。
[0153]
在本申请的一实现方式中,所述目标节点用于在所述目标双向环形链路中确定掉线节点;在基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步方面,上述程序包括用于执行以下步骤的指令:
[0154]
基于所述目标节点的第三配置信息,向所述目标节点的下游邻节点发送第四数据包,所述第四数据包包括所述目标节点的地址;
[0155]
若所述目标节点接收到来自所述目标节点的下游邻接点的第五数据包,则向所述目标节点的上游邻接点发送第六数据包,所述第六数据包包括所述目标节点的地址,所述第五数据包包括转发所述第二数据包的节点的地址;
[0156]
基于所述第五数据包和所述目标节点接收到的来自所述目标节点的上游邻接点的第七数据包,确定掉线节点,所述第七数据包包括转发所述第六数据包的节点的地址;
[0157]
基于所述掉线节点对所述目标节点的第二配置信息进行更新,以及生成目标数据包,所述目标数据包包括更新后的所述目标节点的第二配置信息;
[0158]
基于所述目标节点的第三配置信息向所述目标节点的下游邻节点发送所述目标数据包,以及确定所述目标节点的下游邻节点为目标节点,所述目标数据包用于所述目标双向环形链路中的节点对配置信息进行更新;重复此步骤,直至对所述目标双向环形链路中所有的节点第二配置信息进行更新。
[0159]
需要说明的是,本实施例的具体实现过程可参见上述方法实施例所述的具体实现过程,在此不再叙述。
[0160]
请参阅图3,图3是本申请实施例提供的一种信息同步装置,应用于上述电子设备,该装置包括:
[0161]
建立单元301,用于基于n个节点建立目标双向环形链路;
[0162]
确定单元302,用于在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息,所述配置信息包括第一配置信息和第二配置信息,所述第一配置信息包括节点的属性信息,所述第二配置信息包括目标双向环形链路中每个节点的地址;
[0163]
同步单元303,用于基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步,所述目标节点用于确定所述目标双向环形链路中的掉线节点和/或添加到所述目标双向环形链路中的新增节点。
[0164]
在本申请的一实现方式中,每个所述属性信息均包括第三配置信息和第四配置信息,所述第三配置信息包括下游邻节点的地址和上游邻节点的地址;在基于n个节点建立目标双向环形链路,以及在建立所述目标双向环形链路的过程中,确定所述n节点中每个节点的配置信息方面,上述建立单元301用于执行以下步骤的指令:
[0165]
步骤11:将第一节点加入第一链表,得到所述第一节点的下游邻节点的地址和上游邻节点的地址,以得到所述第一节点的第三配置信息,所述第一节点为所述n个节点中的其中一个;
[0166]
步骤12:将所述第一节点的下游邻节点的第三配置信息中的上游邻节点的地址更新为所述第一节点的地址,以及将所述第一节点的上游邻节点的第三配置信息中的下游邻节点的地址更新为所述第一节点的地址;
[0167]
步骤13:连接所述第一链表的表头和所述第一链表的表尾得到子双向环形链路;
[0168]
步骤14:基于所述第一节点在所述子双向环形链路中的位置确定所述第一节点的第四配置信息;
[0169]
步骤15:基于第一处理策略确定所述第一节点的第二配置信息;
[0170]
重复步骤11-15直至所述n个节点中的每个节点都作为第一节点,以得到所述目标双向环形链路和所述n节点中每个节点的配置信息。
[0171]
在本申请的一实现方式中,所述第四配置信息包括键、键值、更新时间以及栈高度;在基于所述第一节点在所述双向环形链路中的位置确定所述第一节点的第四配置信息方面,上述确定单元302具体用于执行以下步骤的指令:
[0172]
若所述第一节点为所述第一链表的表头,则确定所述第一节点的第四配置信息为预设配置信息,所述预设配置信息包括预设键值、预设更新时间以及预设栈高度;
[0173]
若所述第一节点不为所述第一链表的表头,则基于第二处理策略确定所述第一节点的第四配置信息。
[0174]
在本申请的一实现方式中,所述第二处理策略用于指示:
[0175]
在所述子双向环形链路中确定第二节点;
[0176]
将所述第二节点的第四配置信息的更新时间更新为当前时间,栈高度加一以及键值加一;
[0177]
将所述第二节点的第四配置信息发送给第三节点,所述子双向环形链路包括所述第三节点,所述第三节点为所述第二节点的下游邻节点;
[0178]
若所述第二节点的第四配置信息中的时间大于所述第三节点的第四配置信息中的时间,则基于所述第二节点中的第四配置信息确定所述第二节点中的第四配置信息,以及将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点;
[0179]
若所述第二节点的第四配置信息中的时间小于所述第三节点的第四配置信息中的时间,则确定所述第三节点的第四配置信息不变,以及将第四节点作为所述第二节点,所述第二节点作为所述第三节点,所述第三节点作为所述第四节点;
[0180]
若所述第二节点的第四配置信息中的时间等于所述第三节点的第四配置信息中
的时间,则基于所述第二节点的第四配置信息中的栈高度和所述第三节点的第四配置信息中的栈高度,确定所述第三节点的第四配置信息;
[0181]
直至所述子双向环形链路中的第一节点被作为第三节点,所述第一节点的上游邻节点被作为第二节点,以确定所述第一节点的第四配置信息。
[0182]
在本申请的一实现方式中,在基于所述第二节点的第四配置信息中的栈高度和所述第三节点的第四配置信息中的栈高度,确定所述第三节点的第四配置信息方面,上述确定单元302具体用于执行以下步骤的指令:
[0183]
若所述第二节点的第四配置信息中的栈高度大于所述第三节点的第四配置信息中的栈高度,则基于所述第二节点中的第四配置信息确定所述第三节点的第四配置信息,以及将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点;
[0184]
若所述第二节点的第四配置信息中的栈高度小于所述第三节点的第四配置信息中的栈高度,则将第四节点作为所述第二节点,所述第二节点作为所述第三节点,所述第三节点作为所述第四节点;
[0185]
若所述第二节点的第四配置信息中的栈高度等于所述第三节点的第四配置信息中的栈高度,则将所述第三节点作为第二节点,所述第三节点的下游邻节点作为第三节点。
[0186]
在本申请的一实现方式中,所述第一处理策略用于指示:
[0187]
步骤21:在所述子环形链路中确定第五节点;
[0188]
步骤22:基于所述第五节点的第三配置信息,发送第一数据包给所述第五节点的下游邻节点,所述第一数据包包括所述第五节点的地址;
[0189]
步骤23:基于所述第五节点接收到的来自所述第五节点的上游邻节点的第二数据包,确定所述第五节点的第二配置信息,所述第二数据包包括转发所述第一数据包的节点的地址;
[0190]
步骤24:基于所述第五节点的第三配置信息,发送第三数据包给所述第五节点的下游邻节点,以及将所述第五节点的下游邻节点作为第五节点,所述第三数据包包括所述第五节点的第二配置信息;
[0191]
重复步骤24直至所述第一节点的上游邻节点被作为第五节点,并基于所述第一节点接收到所述第一节点的上游邻节点发送的所述第三数据包,确定所述第一节点的第二配置信息。
[0192]
在本申请的一实现方式中,所述目标节点用于在所述目标双向环形链路中确定掉线节点;
[0193]
在基于所述目标双向环形链路中的目标节点,对所述目标双向环形链路中节点的配置信息进行同步方面,上述同步单元303用于执行以下步骤的指令:
[0194]
基于所述目标节点的第三配置信息,向所述目标节点的下游邻节点发送第四数据包,所述第四数据包包括所述目标节点的地址;
[0195]
若所述目标节点接收到来自所述目标节点的下游邻接点的第五数据包,则向所述目标节点的上游邻接点发送第六数据包,所述第六数据包包括所述目标节点的地址,所述第五数据包包括转发所述第二数据包的节点的地址;
[0196]
基于所述第五数据包和所述目标节点接收到的来自所述目标节点的上游邻接点的第七数据包,确定掉线节点,所述第七数据包包括转发所述第六数据包的节点的地址;
[0197]
基于所述掉线节点对所述目标节点的第二配置信息进行更新,以及生成目标数据包,所述目标数据包包括更新后的所述目标节点的第二配置信息;
[0198]
基于所述目标节点的第三配置信息向所述目标节点的下游邻节点发送所述目标数据包,以及确定所述目标节点的下游邻节点为目标节点,所述目标数据包用于所述目标双向环形链路中的节点对配置信息进行更新;重复此步骤,直至对所述目标双向环形链路中所有的节点第二配置信息进行更新。
[0199]
需要说明的是,建立单元301,确定单元302以及同步单元303可通过处理器实现。
[0200]
本申请实施例还提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如上述方法实施例中电子设备所描述的部分或全部步骤。
[0201]
本申请实施例还提供了一种计算机程序产品,其中,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法中电子设备所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
[0202]
本申请实施例所描述的方法或者算法的步骤可以以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read only memory,rom)、可擦除可编程只读存储器(erasable programmable rom,eprom)、电可擦可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于接入网设备、目标网络设备或核心网设备中。当然,处理器和存储介质也可以作为分立组件存在于接入网设备、目标网络设备或核心网设备中。
[0203]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,dvd))、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
[0204]
以上所述的具体实施方式,对本申请实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请实施例的具体实施方式而已,并不用
于限定本申请实施例的保护范围,凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1