序列号确定方法、设备及存储介质与流程

文档序号:26786296发布日期:2021-09-28 20:17阅读:299来源:国知局
序列号确定方法、设备及存储介质与流程

1.本技术涉及分布式应用技术领域,尤其涉及一种序列号确定方法、设备及存储介质。


背景技术:

2.在分布式的应用系统中,针对同一业务通常分别部署多个服务器进行运营,用户可以与任意一个服务器进行业务交互,在分布式系统中服务器的运营过程中,各个服务器可以独立处理用户在业务中的事务,服务器可以针对各个事务生成分布式系统中全局唯一的序列号,如用户id、订单编号等,通过该序列号来区分不同的事务。
3.在一些业务场景中,针对各个事务需要区分其在逻辑上的先后顺序,事务不同的逻辑顺序对全局最终的状态有不同的影响,例如,在银行转账事务中,若某一银行账户余额为0,分布式系统中的服务器a接收到针对该账户转入100元的事务,分布式系统中的服务器b接收到针对该账户转出100元的事务,这两个事务的发生顺序不同直接影响转账是否成功,并进一步影响该账户的最终余额。现有技术中的分布式系统难以做到对全局的事务进行统一定序,导致了全局事务次序的混乱,进一步影响了分布式系统的可靠运行。


技术实现要素:

4.本技术提供一种序列号确定方法、设备及存储介质,通过本技术可以实现对分布式系统中全局事务的统一定序,进而保证了分布式系统中全局事务的次序一致性。
5.本技术第一方面提供了一种序列号确定方法,该方法可以基于包含至少两个网络设备的序列号确定系统实现,序列号确定系统中的网络设备是具有网络报文转发能力和处理能力(如序列号比较、序列号更新等处理)的任意网络设备,例如,服务器、交换机、单片机、路由器等设备。序列号确定系统中的多个网络设备可以与序列号请求设备相连接,作为序列号确定系统的多个接口,接收一个或多个序列号请求者针对事务的序列号请求,进而实现序列号系统针对该序列号请求分配序列号。该方法可以应用在分布式系统中,为事务确定一个能全局唯一定序的序列号的场景中。
6.在该方法中,针对序列号确定系统中的任意一个第一网络设备,可以接收第一序列号请求,其中,第一序列号请求中包含第一报文序列号。第一序列号请求可以是从序列号确定系统以外的、与第一网络设备相连的任意第一序列号请求设备接收的,则当前第一序列号请求中的第一报文序列号是第一序列号请求设备设置的序列号;第一序列号请求也可以是从序列号确定系统中除第一网络设备以外的其他网络设备接收的,则当前第一序列号请求中的第一报文序列号是经过该其他网络设备确定的。
7.进而,第一网络设备比较第一报文序列号和第一设备序列号,第一设备序列号用于记录所述网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,在第一报文序列号不大于第一设备序列号的情况下,第一网络设备根据第一设备序列号,从第一序列号请求对应的第一序列号取值集合中确定第一序列号取值。其中,第一序列号取值集合
包含多个不相等的序列号取值,第一序列号取值是第一序列号取值集合中,大于第一设备序列号的一个序列号取值。
8.然后,第一网络设备根据第一序列号取值更新第一序列号请求中的第一报文序列号,并按照第一序列号请求的请求路由信息,发送第一报文序列号更新后的第一序列号请求。其中,请求路由信息用于指示第一序列号请求在序列号确定系统中各个网络设备之间的第一遍历路径,以及指示在第一遍历路径遍历完成之后向第一序列号请求设备发送第一序列号请求的第一返回路由,第一序列号请求设备是向序列号确定系统中的网络设备发送第一序列号请求的序列号请求设备。也就是,第一网络设备在第一遍历路径遍历未完成的情况下,第一网络设备根据请求路由信息,确定出在第一遍历路径中第一网络设备的下一跳网络设备,并将第一报文序列号更新后的第一序列号请求,发送给第一遍历路径中的该下一跳网络设备;在第一遍历路径遍历完成的情况下,将第一报文序列号更新后的第一序列号请求发送给第一序列号请求设备。
9.该方法中,第一设备序列号中记录的是第一网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,也就是第一网络设备当前已知的最大的报文序列号,在第一序列号请求中的报文序列号不大于第一网络设备的第一设备序列号的情况下,根据第一设备序列号从第一序列号取值集合中确定用于更新第一报文序列号的第一序列号取值,保证了更新后的第一报文序列号大于第一网络设备当前已知的最大的报文序列号,那么,经过第一遍历路径中各个网络设备的遍历,保证了最终返回第一序列号请求设备的第一报文序列号,大于序列号确定系统中各个网络设备在接收到第一序列号请求之前已知的最大报文序列号,序列号确定系统实现了按照数值严格递增的顺序,为第一序列号请求分配了序列号,为第一序列号请求对应的事务确定能全局唯一定序的第一报文序列号,实现了全局事务的次序一致性。
10.可选的,第一网络设备在确定第一序列号确定时,可以将第一序列号取值集合中,大于当前第一设备序列号的最小序列号取值,确定为第一序列号取值,避免了第一序列号取值集合中序列号取值的浪费,实现了第一序列号取值集合中序列号取值的合理利用。
11.可选的,序列号确定系统的各个网络设备中,包含至少两个起始网络设备,起始网络设备是用于从序列号确定系统以外的序列号请求设备接收序列号请求的网络设备,可以预先配置起始网络设备各自对应的序列号取值集合,各个序列号取值集合均包含多个不相等的序列号取值,并且各个序列号取值集合之间不存在相同的序列号取值。通过为不同起始网络设备预配不同的序列号取值集合,实现为从不同网络设备所接收到的序列号请求,分配在不同序列号取值集合中确定的序列号,避免了序列号的分配冲突。
12.一种可选的实现方式中,可以为各个序列号取值集合设置对应的集合标识,第一序列号请求中可以携带第一集合标识,进而根据第一集合标识,获取第一集合标识对应的第一序列号取值集合。
13.另一种可选的实现方式中,可以根据序列号取值集合和起始网络设备之间的对应关系,建立序列号取值集合和起始网络设备的标识之间的对应关系,第一序列号请求中可以携带第一起始网络设备的标识,进而根据第一起始网络设备的标识,确定第一起始网络设备的标识对应的第一序列号取值集合。
14.可选的,序列号取值集合中的序列号取值可以构成等差数列,各个序列号取值集
合对应的等差数列的首项不相同、公差相同,该公差不小于序列号确定系统中起始网络设备的数量。其中,为保证各个序列号取值集合之间不存在相同的序列号取值,各个序列号取值集合对应的等差数列的首项在不相同的基础上,首项还不能与其他序列号取值集合对应的等差数列的任意一项相等。通过等差数列的方式确定的序列号取值集合,可以保证各个序列号取值集合中的序列号取值不连续,是取值大小分散较为均匀的序列号取值集合,避免了序列号取值集合中序列号取值的浪费。
15.可选的,第一起始网络设备是第一遍历路径的起点,并且序列号确定系统中的各个网络设备在第一遍历路径中均出现且仅出现一次。也就是序列号确定系统中的各个网络设备针对一个序列号请求仅处理一次,从而实现序列号分配效率的提升,以及各个网络设备计算量的降低。
16.可选的,该方法在实现过程中,可能出现第一网络设备停止运行,之后又恢复运行的情况,可能出现第一网络设备之前记录的最大的报文序列号丢失的情况,第一网络设备可以根据序列号请求记录,向至少一个第二序列号请求设备发送第二上报指令,其中,序列号请求记录用于记录从第一网络设备接收到序列号请求的第二序列号请求设备。第二序列号请求设备在第二上报指令的触发下,向第一网络设备发送第二报文序列号,第二报文序列号是第一网络设备当前被分配到的最大的报文序列号,进而第一网络设备确定出接收到第二报文序列号中,取值最大的第二报文序列号,并根据该取值最大的第二报文序列号,确定第一设备序列号的取值。
17.在第一网络设备恢复运行后,通过根据取值最大的第二报文序列号,对自身的第一设备序列号进行的更新,找回在停止运行之前自身记录的最大的报文序列号,进而加入序列号确定系统的正常运行。实现了序列号确定系统的高容错机制,提高了序列号确定方法的可靠性。
18.可选的,本技术提供的序列号确定方法还可以应用在序列号确定系统中,任意网络设备停止运行并恢复运行后的业务恢复场景中。若序列号确定系统中未记录从网络设备接收到序列号请求的序列号请求设备,在序列号确定系统中的任意网络设备停止运行并恢复运行的情况下,第一网络设备在接收第一序列号请求之前,可以向第一序列号请求设备广播第一上报指令,这里,第一序列号请求设备是当前与第一网络设备连接的序列号请求设备。第一序列号请求设备在第一上报指令的触发下,向第一网络设备发送第一序列号请求,其中,第一序列号请求中的第一报文序列号是第一序列号请求设备当前被分配到的最大的报文序列号。
19.通过将各个第一序列号请求在序列号确定系统中的遍历,找回在序列号确定系统中网络设备停止运行后,可能丢失的最大报文序列号,进而在序列号系统再次接收到序列号请求时,按照严格递增的顺序针对序列号请求进行序列号分配,实现了序列号确定系统的高容错机制,提高了序列号确定方法的可靠性。
20.本技术第二方面提供了一种第一网络设备,该第一网络设备是序列号确定系统包含的至少两个网络设备中的任意一个。序列号确定系统中的网络设备是具有网络报文转发能力和处理能力(如序列号比较、序列号更新等处理)的任意网络设备,例如,服务器、交换机、单片机、路由器等设备。序列号确定系统中的多个网络设备可以与序列号请求设备相连接,作为序列号确定系统的多个接口,接收一个或多个序列号请求者针对事务的序列号请
求,进而实现序列号系统针对该序列号请求分配序列号。第一网络设备可以应用在序列号确定系统对分布式系统中事务确定一个能全局唯一定序的序列号的场景中。
21.该第一网络设备可以包括收发模块和处理模块,其中,收发模块,可以用于接收第一序列号请求,其中,第一序列号请求中包含第一报文序列号,第一序列号请求可以是从序列号确定系统以外的、与第一网络设备相连的任意第一序列号请求设备接收的,那么当前第一序列号请求中的第一报文序列号是第一序列号请求设备设置的序列号;第一序列号请求也可以是从序列号确定系统中除第一网络设备以外的其他网络设备接收的,那么当前第一序列号请求中的第一报文序列号是经过该其他网络设备确定的。
22.处理模块,可以用于比较第一报文序列号和第一设备序列号,第一设备序列号用于记录所述网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,在第一报文序列号不大于第一设备序列号的情况下,处理模块用于根据第一设备序列号,从第一序列号请求对应的第一序列号取值集合中确定第一序列号取值。其中,第一序列号取值集合包含多个不相等的序列号取值,第一序列号取值是第一序列号取值集合中,大于第一设备序列号的一个序列号取值。
23.处理模块,还用于根据第一序列号取值更新第一序列号请求中的第一报文序列号,收发模块还用于按照第一序列号请求的请求路由信息,发送第一报文序列号更新后的第一序列号请求。其中,请求路由信息用于指示第一序列号请求在序列号确定系统中各个网络设备之间的第一遍历路径,以及指示在第一遍历路径遍历完成之后向第一序列号请求设备发送第一序列号请求的第一返回路由,第一序列号请求设备是向序列号确定系统中的网络设备发送第一序列号请求的序列号请求设备。也就是收发模块在第一遍历路径遍历未完成的情况下,根据请求路由信息,确定出在第一遍历路径中的下一跳网络设备,并将第一报文序列号更新后的第一序列号请求,发送给第一遍历路径中的该下一跳网络设备;在第一遍历路径遍历完成的情况下,将第一报文序列号更新后的第一序列号请求发送给第一序列号请求设备。
24.该方法中,第一设备序列号中记录的是第一网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,也就是第一网络设备当前已知的最大的报文序列号,在第一序列号请求中的报文序列号不大于第一设备序列号的情况下,处理模块根据第一设备序列号从第一序列号取值集合中确定用于更新第一报文序列号的第一序列号取值,保证了更新后的第一报文序列号大于第一网络设备当前已知的最大的报文序列号,那么,经过第一遍历路径中各个网络设备的遍历,保证了最终返回第一序列号请求设备的第一报文序列号,大于序列号确定系统中各个网络设备,在接收到第一序列号请求之前已知的最大报文序列号,序列号确定系统实现了按照数值严格递增的顺序,为第一序列号请求分配了序列号,为第一序列号请求对应的事务确定能全局唯一定序的第一报文序列号,实现了全局事务的次序一致性。
25.可选的,处理模块可以在确定第一序列号确定时,用于将第一序列号取值集合中,大于当前第一设备序列号的最小序列号取值,确定为第一序列号取值,避免了第一序列号取值集合中序列号取值的浪费,实现了第一序列号取值集合中序列号取值的合理利用。
26.可选的,序列号确定系统的各个网络设备中,包含至少两个起始网络设备,起始网络设备是用于从序列号确定系统以外的序列号请求设备接收序列号请求的网络设备,可以
预先配置起始网络设备各自对应的序列号取值集合,各个序列号取值集合均包含多个不相等的序列号取值,并且各个序列号取值集合之间不存在相同的序列号取值。通过为不同起始网络设备预配不同的序列号取值集合,实现为不同网络设备所接收到的序列号请求,分配在不同序列号取值集合中确定的序列号,避免了序列号的分配冲突。
27.一种可选的实现方式中,可以为各个序列号取值集合设置对应的集合标识,第一序列号请求中可以携带第一集合标识,进而处理模块可以根据第一集合标识,获取第一集合标识对应的第一序列号取值集合。
28.另一种可选的实现方式中,可以根据序列号取值集合和起始网络设备之间的对应关系,建立序列号取值集合和起始网络设备的标识之间的对应关系,第一序列号请求中可以携带第一起始网络设备的标识,进而处理模块可以根据第一起始网络设备的标识,确定第一起始网络设备的标识对应的第一序列号取值集合。
29.可选的,序列号取值集合中的序列号取值可以构成等差数列,各个序列号取值集合对应的等差数列的首项不相同、公差相同,该公差不小于序列号确定系统中起始网络设备的数量。其中,为保证各个序列号取值集合之间不存在相同的序列号取值,各个序列号取值集合对应的等差数列的首项在不相同的基础上,首项还不能与其他序列号取值集合对应的等差数列的任意一项相等。通过等差数列的方式确定的序列号取值集合,可以保证各个序列号取值集合中的序列号取值不连续,是取值大小分散较为均匀的序列号取值集合,避免了序列号取值集合中序列号取值的浪费。
30.可选的,第一起始网络设备是第一遍历路径的起点,并且序列号确定系统中的各个网络设备在第一遍历路径中均出现且仅出现一次。也就是序列号确定系统中的各个网络设备针对一个序列号请求仅处理一次,从而实现序列号分配效率的提升,以及各个网络设备计算量的降低。
31.可选的,在序列号确定系统的运行过程中,可能出现第一网络设备停止运行,之后又恢复运行的情况,可能出现第一网络设备之前记录的最大的报文序列号丢失的情况,收发模块还用于根据序列号请求记录,向至少一个第二序列号请求设备发送第二上报指令,其中,序列号请求记录用于记录从第一网络设备接收到序列号请求的第二序列号请求设备。第二序列号请求设备在第二上报指令的触发下,向收发模块发送第二报文序列号,第二报文序列号是第一网络设备当前被分配到的最大的报文序列号。处理模块还用于确定出接收到第二报文序列号中,取值最大的第二报文序列号,以及根据该取值最大的第二报文序列号,确定第一设备序列号的取值。
32.在第一网络设备恢复运行后,通过根据取值最大的第二报文序列号对自身的第一设备序列号进行的更新,找回在停止运行之前自身记录的最大的报文序列号,进而加入序列号确定系统的正常运行。实现了序列号确定系统的高容错机制,提高了序列号确定方法的可靠性。
33.可选的,在序列号确定系统的运行过程中,若序列号确定系统中未记录从网络设备接收到序列号请求的序列号请求设备,在序列号确定系统中的任意网络设备停止运行并恢复运行的情况下,收发模块在接收第一序列号请求之前,可以用于向第一序列号请求设备广播第一上报指令,这里,第一序列号请求设备是当前与第一网络设备连接的序列号请求设备。第一序列号请求设备在第一上报指令的触发下,向收发模块发送第一序列号请求,
其中,第一序列号请求中的第一报文序列号是第一序列号请求设备当前被分配到的最大的报文序列号。
34.通过将第一序列号请求在序列号确定系统中的遍历,找回在序列号确定系统中网络设备停止运行后,可能丢失的最大报文序列号,进而在序列号系统再次接收到序列号请求时,按照严格递增的顺序针对序列号请求进行序列号分配,实现了序列号确定系统的高容错机制,提高了序列号确定方法的可靠性。
35.本技术第三方面提供了另一种第一网络设备,包括处理器、通信接口和存储器,所述处理器、通信接口和存储器通过总线耦合,其中,所述通信接口用于接收和发送数据,所述处理器用于调用存储器中存储的程序,所述程序当被计算机执行时使所述计算机执行上述第一方面及其任意一种可能的实现方式中的序列号确定方法。所述存储器用于存储上述程序。上述的处理器与存储器可以是物理上相互独立的单元,或者,存储器也可以和处理器集成在一起。
36.本技术第四方面提供了一种序列号确定系统,该系统包括至少两个上述第二方面的第一网络设备。
37.本技术第五方面提供了另一种序列号确定系统,该系统包括至少两个上述第三方面的第一网络设备。
38.本技术第六方面提供了一种计算机存储介质,计算机存储介质存储有指令,当该指令在计算机上运行时,使得计算机执行上述第一方面及其任意一种可能的实现方式中的方法。
39.本技术第七方面提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述第一方面及其任意一种可能的实现方式中的方法。
40.本技术第八方面提供了一种芯片,所述芯片包括处理器和通信接口,所述处理器与所述通信接口耦合,用于实现上述第一方面及其任意一种可能的实现方式中的方法。
附图说明
41.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1是本技术实施例提供的一种分布式系统中的事务执行示意图;
43.图2是本技术实施例提供的另一种分布式系统中的事务执行示意图;
44.图3是本技术实施例提供的一种序列号确定系统的架构示意图;
45.图4是本技术实施例提供的一种序列号确定方法的流程示意图;
46.图5是本技术实施例提供的一种序列号取值集合的确定示意图;
47.图6是本技术实施例提供的另一种序列号取值集合的确定示意图;
48.图7是本技术实施例提供的一种序列号取值集合的取值示意图;
49.图8是本技术实施例提供的一种序列号确定示意图;
50.图9是本技术实施例提供的另一种序列号确定示意图;
51.图10是本技术实施例提供的另一种序列号确定示意图;
52.图11是本技术实施例提供的另一种序列号确定示意图;
53.图12是本技术实施例提供的另一种序列号确定示意图;
54.图13是本技术实施例提供的又一种序列号确定示意图;
55.图14是本技术实施例提供的一种业务恢复的流程示意图;
56.图15是本技术实施例提供的另一种业务恢复的流程示意图;
57.图16是本技术实施例提供的一种第一网络设备的结构示意图;
58.图17是本技术实施例提供的另一种第一网络设备的结构示意图;
59.图18是本技术实施例提供的一种芯片的结构示意图。
具体实施方式
60.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
61.本技术主要解决分布式系统中全局事务次序不一致的问题,在介绍本技术提供的序列号确定方法、系统和相关的设备之前,首先结合图1和图2再详细介绍一下分布式系统中全局事务次序的一致性问题。
62.参见图1,图1是本技术实施例提供的一种分布式系统中的事务执行示意图,如图1所示,事务提交者a和事务提交者b分别可以向分布式系统中的事务执行者c和事务执行者d提交事务,例如,在分布式系统中,各个分布式节点中存在多个业务数据的副本,可以分别通过事务提交者a或事务提交者b,对事务执行者c和事务执行者d这两个分布式节点提交针对业务数据副本的修改、删除等操作。在事务a生成之后,事务提交者a可以分别将事务a发送至事务执行者c和事务执行者d,事务b生成之后,事务提交者b可以分别将事务b发送至事务执行者c和事务执行者d。
63.事务传输的过程中,可能由于带宽、距离等因素的影响,导致事务到达事务执行者的顺序是不同的,例如图1中所示,事务执行者c先接收到事务a,后接收到事务b,那么在事务执行者c中事务a要先于事务b执行,而事务执行者d先接收到事务b,后接收到事务a,在事务执行者d中事务b要先于事务a执行。由于事务a和事务b没有全局统一的顺序,导致了分布式系统中的事务执行者c和事务执行者d这两个分布式节点,对事务a和事务b有不同的视角,就会进一步导致全局最终状态的不统一。
64.举例来说,若事务执行者c和事务执行者d这两个分布式节点中分别存储有相同的业务数据副本,该业务数据副本可以如表1所示:
65.业务数据1业务数据2业务数据3业务数据4业务数据5
66.表1
67.假设事务a是对第四条业务数据进行删除,事务b是对第四条业务数据进行修改,那么事务执行者c中就会先对当前第四条业务数据(即业务数据4)进行删除,进而对剩下的业务数据副本中的第四条业务数据(即业务数据5)进行修改(得到业务数据5’),那么事务执行者c最后的状态可以如表2所示:
68.业务数据1业务数据2业务数据3业务数据5’69.表2
70.而事务执行者d中会先对当前第四条业务数据(即业务数据4)进行修改(得到业务数据4’),进而对剩下的业务数据副本中的第四条业务数据(即业务数据4’)进行删除,那么事务执行者d最后的状态可以如表3所示:
71.业务数据1业务数据2业务数据3业务数据4
72.表3
73.这样就导致了事务执行者c和事务执行者d这两个分布式节点最后的状态(即表2中的业务数据和表3中的业务数据)不相同,进而会影响分布式系统的可靠运行。
74.针对分布式系统中全局事务的统一次序问题,可以通过全局事务服务(global transaction service,gts)或全局事务管理(global transaction manage,gtm)的方案对分布式系统中的事务的统一性进行管理,本技术中的序列号确定方法可以理解成为一种gts或gtm方案,通过gts或gtm方案,可以为分布式系统中的事务分配全局统一的序列号,保证各个事务有统一的全序关系(total order),进而各个分布式节点可以按照该统一的全序关系,对事务进行统一顺序的执行。
75.下面介绍图1中的分布式系统通过gts或gtm进行统一管理的情况下,事务执行者c和事务执行者d对事务a和事务b的执行。参阅图2,图2是本技术实施例提供的另一种分布式系统中的事务执行示意图,图2中的gts节点可以为分布式系统中的事务分配一个全局的序列号,事务执行者可以按照该全局的序列号执行事务。事务a生成之后,事务提交者a可以向gts节点为事务a申请序列号,gts节点可以为事务a分配序列号x,事务b生成之后,事务提交者b也可以向gts节点为事务b申请序列号,gts节点可以为事务b分配序列号y,事务b在事务a之后到达gts节点,因此,序列号y可以大于序列号x。事务提交者a接收到序列号x之后,将携带序列号x的事务a分别发送给事务执行者c和事务执行者d,事务提交者b接收到序列号y之后,将携带序列号y的事务b分别发送给事务执行者c和事务执行者d。
76.图2中和图1中相对应,事务a先于事务b到达事务执行者c,事务b先于事务a到达事务执行者d,那么事务执行者c可以先执行事务a,在接收到事务b后,由于事务b的序列号y确实大于事务a的序列号x,可以正常执行事务b;而事务执行者d接收到事务b之后,可以先执行事务b,在接收到事务a后,由于事务a的序列号x小于事务b的序列号y,事务执行者d可以判定事务b是在事务a之后的事务,因此可以进行事务回滚或事务重排等操作,使事务b的执
行撤销,对事务a执行之后,再执行事务b,使得事务执行者c和事务执行者d的执行结果是统一的。
77.以表1对应的示例来说,事务执行者c先对当前第四条业务数据进行删除,进而对剩下的业务数据副本中的第四条业务数据进行修改,得到的最后的状态可以如表2所示;而事务执行者d收到事务b后,先对第四条业务数据进行删除,得到的状态如表4中所示:
78.业务数据1业务数据2业务数据3业务数据5
79.表4
80.在接收到事务a之后,进行事务回滚,将事务b的执行撤销,即当前的状态依然是表1对应的状态,进而先执行事务a,再执行事务b,即先对当前第四条业务数据进行删除,进而对剩下的业务数据副本中的第四条业务数据进行修改,最终得到的状态与图2中的状态相同,也就是事务执行者c和事务执行者d的状态得到了统一,保证了分布式系统的可靠运行。
81.本技术提供的序列号确定方法就是一种针对分布式系统中全局序列号的确定方法,通过该方法可以实现为分布式系统中事务确定一个能全局唯一定序的序列号,实现全局事务的次序一致性,进而保证分布式系统的可靠运行。在介绍本技术提供的序列号确定方法之前,首先介绍实现该方法所基于的系统架构。
82.参阅图3,图3是本技术实施例提供的一种序列号确定系统的架构示意图,该序列号确定系统包括至少两个网络设备,图3中示例性地画出了网络设备001、网络设备002和网络设备003这三个网络设备。其中,序列号确定系统中的网络设备是具有网络报文转发能力和处理能力(如序列号比较、序列号更新等处理)的任意网络设备,例如,服务器、交换机、单片机、路由器等设备。
83.序列号确定系统中的网络设备可以与不同的序列号请求设备相连接,作为序列号确定系统的多个接口,接收一个或多个序列号请求者针对事务的序列号请求,例如图3中的网络设备001可以接收序列号请求设备004和序列号请求设备005的序列号请求,网络设备003可以接收序列号请求设备006的序列号请求,进而通过序列号请求系统实现对序列号的分配。这里的序列号请求设备可以是分布式系统中全局事务的检测设备,这里,全局事务可以是指分布式系统中各个分布式节点需要以同一个统一视角看待的事务。序列号请求设备检测到的事务可以是序列号请求设备生成的事务,也可以接收到的其他设备发送的事务,可以是个人电脑、智能手机(如android手机、ios手机等)、平板电脑、掌上电脑、智能穿戴设备(如智能手环、虚拟现实眼镜等)或移动物联设备等发送的事务。
84.在序列号确定系统中,与序列号请求设备相连的网络设备(如图3中的网络设备001或网络设备003)可以接收序列号请求设备的序列号请求,该序列号请求中携带有报文序列号,进而该序列号请求在序列号系统中的各个网络设备之间遍历转发(如在图3中,报文序列号需要在网络设备001、网络设备002和网络设备003之间遍历转发),使得各个网络设备对序列号请求中的报文序列号进行处理,在遍历完成之后,将经过各个网络设备处理后的序列号请求返回对应的序列号请求设备。通过各个网络设备对序列号请求中报文序列号的处理,实现对序列号的分配。
85.其中,针对序列号确定系统中的任意一个网络设备,在接收序列号请求之后,对序列号请求中的报文序列号进行处理,具体处理方式为:在序列号请求中的报文序列号不大于该网络设备的设备序列号的情况下,根据该网络设备的设备序列号,从该序列号请求对应的序列号取值集合中确定出第一序列号取值,根据第一序列号取值更新该序列号请求的报文序列号。其中,网络设备的设备序列号用于记录该网络设备当前所发送的所有序列号请求中包含的最大的报文序列号;序列号请求对应的序列号取值集合中包含多个不相等的序列号取值,第一序列号取值是其中大于该网络设备的设备序列号的一个序列号取值。
86.对该序列号请求处理完成之后,网络节点根据该序列号请求的请求路由信息,发送该序列号请求,其中,序列号请求的请求路由信息用于指示序列号请求在序列号确定系统中各个网络设备之间的遍历路径,还用于指示在该遍历路径遍历完成之后,将序列号请求发送给相应序列号请求设备的返回路由。具体的,若当前的网络节点是序列号请求的遍历路径中的最后一跳,那么网络节点将序列号请求发送给相应的序列号请求设备;若当前网络节点不是序列号请求的遍历路径中的最后一跳,那么网络节点将序列号请求发送至遍历路径中的下一跳网络设备。
87.例如,序列号请求设备004在检测到事务后,针对该事务向序列号确定系统申请序列号,序列号请求设备004向网络设备001发送针对该事务的序列号请求1,网络设备001接收到序列号请求1后,对序列号请求1进行上述处理,处理完成之后,发送序列号请求1;序列号请求1的请求路由信息可以指示序列号请求1的遍历路径是:网络设备001

网络设备002

网络设备003

网络设备001,一种实现方式中,序列号请求的请求路由信息对遍历路径的指示可以是基于源路由机制指示,在序列号请求中设置该序列号请求途径的全部或部分网络设备的标识,那么,网络设备001可以根据该标识,确定遍历路径还未遍历完成,当前自身不是遍历路径的下一跳,就可以将处理之后的序列号请求1发送给遍历路径中的下一跳网络设备,即网络设备002。依次类推,网络设备002接收到序列号请求1之后,对序列号请求1进行处理,并将处理后的序列号请求1发送给网络设备003;网络设备003接收到序列号请求1之后,对序列号请求1进行处理,并将处理后的序列号请求001发送给网络设备001;网络设备001接收到序列号请求1之后,对序列号请求1进行处理,处理之后,确定当前自身是序列号请求1的遍历路径中的最后一跳网络设备,将处理之后的序列号请求1发送给序列号请求设备004。序列号请求设备004接收到的序列号请求1中的报文序列号,即为序列号确定系统分配的序列号。
88.设备序列号中记录的是网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,也就是网络设备当前已知的最大的报文序列号,在序列号请求中的报文序列号不大于网络设备的设备序列号的情况下,根据设备序列号从序列号取值集合中确定用于更新报文序列号的第一序列号取值,保证了更新后的报文序列号大于网络设备当前已知的最大的报文序列号,那么,经过遍历路径中各个网络设备的遍历,保证了最终返回序列号请求设备的报文序列号,大于序列号确定系统中各个网络设备在接收到第一序列号请求之前已知的最大报文序列号,序列号确定系统实现了按照数值严格递增的顺序,为序列号请求分配了序列号,为序列号请求对应的事务确定了能全局唯一定序的序列号,实现了全局事务的次序一致性。
89.下面介绍本技术提供的序列号确定方法的具体实现,一种实现中,该方法可以使
用在为分布式系统中的事务分配序列号的场景中。参见图4,图4是本技术实施例提供的一种序列号确定方法的流程示意图,如图4所示,所述方法可以包括步骤s401-s404。
90.s401,第一网络设备接收第一序列号请求。
91.其中,第一序列号请求包含第一报文序列号,第一网络设备是序列号确定系统包含的至少两个网络设备中的任意一个。第一序列号请求可以是从序列号确定系统以外的、与第一网络设备相连的任意第一序列号请求设备接收的,也可以是从序列号确定系统中除第一网络设备以外的其他网络设备接收的。若第一序列号请求是从第一序列号请求设备接收的,当前第一序列号请求中的第一报文序列号是第一序列号请求设备设置的序列号,该序列号的取值可以是任意取值,例如,可以默认设置为0,或者可以设置为当前第一序列号请求设备被分配过的序列号中的最大值,等等,具体设置方式不做具体限定。若第一序列号请求是从其他网络设备接收的,第一序列号请求中当前的第一报文序列号是经过该其他网络设备确定的。
92.s402,在所述第一报文序列号不大于第一设备序列号的情况下,所述第一网络设备根据所述第一设备序列号,从所述第一序列号请求对应的第一序列号取值集合中确定第一序列号取值。
93.其中,第一设备序列号用于记录所述网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,第一序列号取值集合包含多个不相等的序列号取值,第一序列号取值是第一序列号取值集合中,大于第一设备序列号的一个序列号取值。
94.第一网络设备接收到第一序列号请求之后,可以将第一序列号请求中的第一报文序列号与第一网络设备的第一设备序列号进行比较,在第一报文序列号不大于第一设备序列号的情况下,确定第一序列号取值,在第一报文序列号大于第一设备序列号的情况下,对第一报文序列号不做处理,发送该第一序列号请求。
95.其中,序列号确定系统的各个网络设备中,包含至少两个起始网络设备,起始网络设备是用于从序列号确定系统以外的序列号请求设备接收序列号请求的网络设备,例如,若s401中第一网络设备是从第一序列号请求设备接收的第一序列号请求,那么网络设备是序列号确定系统中的一个起始网络设备。可以预先配置起始网络设备各自对应的序列号取值集合,各个序列号取值集合均包含多个不相等的序列号取值,并且各个序列号取值集合之间不存在相同的序列号取值。
96.一种实现方式中,可以为各个序列号取值集合设置对应的集合标识,第一序列号请求中可以携带第一集合标识,进而根据第一集合标识,获取第一集合标识对应的第一序列号取值集合。其中,第一集合标识是第一序列号取值集合的集合标识,第一序列号取值集合是序列号确定系统中,从第一序列号请求设备接收第一序列号请求的第一起始网络设备所对应的序列号取值集合。一种可选的方式中,可以是第一起始网络设备接收到第一序列号请求之后,将自身对应的第一集合标识写入第一序列号请求中。另一种可选的方式中,可以在第一序列号请求设备中配置第一起始网络设备对应的第一集合标识,第一序列号请求设备在将第一序列号请求发送给第一起始网络设备之前,由第一序列号请求设备将第一集合标写入第一序列号请求中。
97.另一种实现中,可以根据序列号取值集合和起始网络设备之间的对应关系,建立序列号取值集合和起始网络设备的标识之间的对应关系,第一序列号请求中可以携带第一
起始网络设备的标识,进而根据第一起始网络设备的标识,确定第一起始网络设备的标识对应的第一序列号取值集合。一种可选的方式中,第一起始网络设备的标识可以由第一起始网络设备写入第一序列号请求中,另一种可选的方式中,第一起始网络设备的标识可以由第一序列号请求设备写入第一序列号请求中。
98.可选的,在配置各个起始网络设备的序列号取值集合的过程中,可以预先获取一个包含多个候选取值的总体取值集合,该总体取值集合中的候选取值分配给各个序列号取值集合的全部的序列号取值,总体取值集合中的候选取值各不相等,在对各个序列号取值集合进行序列号取值分配的过程中,各个序列号取值集合被分配到的取值大小排序连续的候选取值的数量,不超过预设的数量阈值。也就是说,可以先将总体取值集合中的候选取值按照从小到大的顺序或从大到小的顺序进行排列,进而按照排列顺序分散地分配给各个序列号取值集合,即在按照排列顺序进行分配候选取值的过程中,每个序列号取值集合连续被分配到候选取值的数量,不超过预设的数量阈值。避免了不同起始网络设备接收的序列号请求交叉进行序列号的申请时,报文序列号的跳变过大,引起序列号取值集合中的序列号取值的浪费,具体原因将在后文中结合图8-图13的示例进行介绍。
99.参见图5,图5是本技术实施例提供的一种序列号取值集合的确定示意图,如图5所示,总体取值集合为a,集合a中包含n个候选取值,按照从小到大的顺序进行排列后,排序如图5中的a1→
a
n
,若序列号取值集合共有三个,分别为b、c和d,在对b、c和d分配候选取值时,将a
1-a
n
分散地分配给b、c和d,而尽量避免将超过预设数量的连续候选取值分配给同一个序列号取值集合。例如,参见图6,图6是本技术实施例提供的另一种序列号取值集合的确定示意图,如图6中,在对b、c和d进行候选取值分配时,将a排序后,将a中候选取值连续地分配给b、c和d,这样分配候选取值就造成序列号取值的浪费。
100.需要说明的是,本技术仅通过总体取值集合分配候选取值的方式,示例性地介绍了得到上述取值互不相等,且取值大小分散较为均匀的多个序列号取值集合的确定方式,也可以通过其他方式得到上述特征的序列号取值集合,此处限定具体确定方式。
101.进一步可选的,序列号取值集合中的序列号取值可以构成等差数列,各个序列号取值集合对应的等差数列是首项不相同,且公差相同的等差数列,该公差不小于序列号确定系统中起始网络设备的数量。可以理解的是,为保证各个序列号取值集合之间不存在相同的序列号取值,各个序列号取值集合对应的等差数列的首项在不相同的基础上,首项还不能与其他序列号取值集合对应的等差数列的任意一项相等。
102.一种实现方式中,公差可以等于序列号确定系统中起始网络设备的数量,另一种实现方式中,公差可以大于序列号确定系统中起始网络设备的数量,在大于的情况下,可以为序列号确定系统的扩展预留序列号取值资源。
103.举例来说,若序列号确定系统中的起始网络设备有三个,分别为起始网络设备1、起始网络设备2和起始网络设备3,参见图7,图7是本技术实施例提供的一种序列号取值集合的取值示意图,如图7所示,起始网络设备1的序列号取值集合对应首项为1,公差为3的等差数列,起始网络设备2的序列号取值集合对应首项为2,公差为3的等差数列,起始网络设备3的序列号取值集合对应首项为3,公差为3的等差数列。另一种方式中,也可以将起始网络设备1的序列号取值集合对应首项为1,公差为5的等差数列,起始网络设备2的序列号取值集合对应首项为2,公差为5的等差数列,起始网络设备3的序列号取值集合对应首项为3,
公差为5的等差数列,而将首项为4,公差为5的等差数列,以及首项为5,公差为5的等差数列预留出来,在序列号确定系统进行扩展时,例如新增了起始网络设备4,可以根据预留的任一等差数列确定对应的序列号取值集合。进一步地,在新增起始网络设备4时,当前序列号确定系统中已分配的最大的报文序列号为30002,可以为起始网络设备4设置首项为30004,公差为5的等差数列对应的序列号取值集合,降低网络设备后续对该序列号取值集合进行序列号取值查找的数据查找量。
104.通过等差数列的方式确定的序列号取值集合,可以保证各个序列号取值集合中的序列号取值不连续,是取值大小分散较为均匀的序列号取值集合,避免了序列号取值集合中序列号取值的浪费。
105.第一序列号请求对应的第一序列号取值集合获取之后,根据第一设备序列号从中确定第一序列号取值,第一序列号取值可以是第一序列号取值集合中大于第一设备序列号的任意序列号取值。可选的,为了合理使用第一序列号取值集合中序列号取值资源,可以将第一序列号取值集合中,大于第一设备序列号的最小序列号取值确定为第一序列号取值。
106.s403,所述第一网络设备根据所述第一序列号取值更新所述第一报文序列号。
107.一种实现方式中,可以将第一序列号请求中,第一报文序列号的取值更新为该第一序列号取值。也就是将第一序列号请求中的第一报文序列号更新为大于第一网络设备当前已知的最大的报文序列号,实现了序列号确定系统对序列号的递增分配。
108.s404,所述第一网络设备根据所述第一序列号请求的请求路由信息,发送所述第一报文序列号更新之后的所述第一序列号请求。
109.其中,请求路由信息用于指示第一序列号请求在序列号确定系统中各个网络设备之间的第一遍历路径,以及指示在第一遍历路径遍历完成之后向第一序列号请求设备发送第一序列号请求的第一返回路由,第一序列号请求设备是向序列号确定系统中的网络设备发送第一序列号请求的序列号请求设备。
110.一种实现方式中,第一序列号请求的请求路由信息可以包含第一遍历路径信息和第一返回路由信息,第一遍历路径信息用于指示第一序列号请求在序列号确定系统中各个网络设备之间的第一遍历路径,第一返回路由信息用于指示在第一遍历路径的遍历完成后,向第一序列号请求设备发送第一序列号请求的第一返回路径。
111.其中,第一序列号请求的第一遍历路径可以是以第一起始网络设备为起点的路径,序列号确定系统中的各个网络设备在第一遍历路径中均出现,也就是说第一序列号请求中的第一报文序列号需要与每一个网络设备的设备序列号进行比较,从而保证了最终返回第一序列号请求设备的第一序列号请求中的第一报文序列号,是当时序列号请求系统分配过的最大的报文序列号。
112.一种实现方式中,在第一遍历路径中,序列号确定系统中各个网络设备可以均出现且仅出现一次,也就是序列号确定系统中的各个网络设备针对一个序列号请求仅处理一次,从而实现序列号分配效率的提升,以及各个网络设备计算量的降低。例如,若序列号确定系统中有x、y和z三个网络设备,若x为第一序列号请求的第一起始网络设备,第一遍历路径可以是x

y

z或者x

z

y。另一种实现方式中,可以将第一遍历路径设置为从第一起始网络设备为起点的环路,从而节约了序列号确定系统与第一序列号请求设备之间的连接资源。例如,若序列号确定系统中有x、y和z三个网络设备,若x为第一序列号请求的第一起
始网络设备,第一遍历路径可以是x

y

z

x或者x

z

y

x。
113.关于第一网络设备对第一遍历路径信息的获取,一种可选的方式中,可以预先为第一序列号请求设备配置第一起始网络设备对应的第一遍历路径信息,在第一序列号请求设备检测到任意第一事务后,可以第一遍历路径信息写入为第一事务申请序列号的第一序列号请求,进而当第一网络设备接收到第一序列号请求后,可以从第一序列号请求中获取第一遍历路径信息。另一种可选的方式中,可以为第一起始网络设备配置对应的第一遍历路径信息,在第一序列号请求设备将第一序列号请求发送给第一起始网络设备之后,第一起始网络设备将第一遍历路径信息写入第一序列号请求,进而在第一网络设备接收到第一序列号请求后,可以从第一序列号请求中获取第一遍历路径信息。可以理解的是,若第一网络设备为第一起始网络设备,那么第一网络设备也可以获取被配置的第一遍历路径信息,执行对第一序列号请求的发送。又一种可选的方式中,第一起始网络设备接收到第一序列号请求之后,可以获取当前序列号确定系统内的网络状态,根据当前的网络状态,确定第一遍历路径,并将对应的第一遍历路径信息写入第一序列号请求,进而在第一网络设备接收到第一序列号请求后,可以从第一序列号请求中获取第一遍历路径信息。若第一网络设备为第一起始网络设备,第一网络设备也可以直接获取自身根据当前网络状态确定的第一遍历路径信息,执行对第一序列号请求的发送。
114.一种实现方式中,第一遍历路由信息可以是基于源路由机制的路由信息,例如,可以是基于sr(segment routing,分段路由)-mpls(multi-protocol label switching,多协议标签交换)的源路由机制,或基于srv6(segment routing ipv6,基于ipv6的分段路由)的源路由机制等。
115.以基于srv6的源路由机制为例介绍,第一序列号请求可以是ipv6报文,srv6机制是在ipv6报文的ip扩展头中进行新的扩展,新的扩展部分称为srh(segment routing header,段路由标题),srh中包含第一遍历路径中各个网络节点的ip地址,以及各个ip地址对应的sl(segment list,段列表),在第一遍历路径中排序越靠后的网络设备,其ip地址对应的sl越小,最靠后的网络设备对应的sl可以设为0,srh中还可以包含segments left(剩余段)字段,其中存储有第一遍历路径中未遍历的网络设备的数量。例如,假设第一遍历路径信息是由第一序列号请求设备写入第一序列号请求的,第一遍历路径为x

y

z

x,第一序列号请求设备发送给第一起始网络设备(即x)的第一序列号请求中,srh包含sl[0]与x的ip地址的映射关系、sl[1]与z的ip地址的映射关系、sl[2]与y的ip地址的映射关系、sl[3]与x的ip地址的映射关系,以及取值为3的segments left字段。x接收到第一序列号请求后,对第一序列号请求进行处理(序列号比较或序列号更新等处理)之后,将sl[3]对应的ip地址复制在第一序列号请求的报文头中的目的地址字段,并将第一序列号请求中segments left字段的取值减去1,然后按照剩余的3个未遍历的ip地址中sl最大的ip地址进行转发。依次类推,直到x再次接收到第一序列号请求时,此时segments left字段的取值为0,x确定第一序列号请求的第一遍历路径完成遍历。
[0116]
其中,第一返回路由信息可以是第一序列号请求设备发送第一序列号请求之前,写入第一序列号请求中的,一种实现方式中,第一返回路由信息可以包括第一序列号请求设备的通信标识,如ip地址。在序列号确定系统中的网络设备按照第一遍历路径完成对第一序列号请求的遍历的情况下,第一遍历路径中的最后一跳网络设备按照第一返回路由信
息将第一序列号请求设备返回给第一序列号请求设备。
[0117]
可选的,第一序列号请求中还可以包含第一事务标识,第一事务标识可以是第一序列号请求设备写入第一序列号请求的,被第一序列号请求设备用于区分针对第一事务的序列号请求。一种实现方式中,第一事务标识至少包含在第一事务被检测到时,第一序列号请求设备的本地时间戳,通过该第一事务标识可以在第一序列号请求设备本地唯一确定对应的第一事务。另一种实现方式中,第一事务标识可以包括第一序列号请求设备的通信标识,通过该第一事务标识可以在全局唯一确定对应的第一事务,这里的通信标识可以与第一返回路由信息中的通信标识复用。进一步地,按照第一序列号请求设备的本地计时精度,有与第一事务在同一时间粒度内检测到的事务,第一序列号请求设备可以为在同一时间粒度内事务生成对应的随机数,通过本地时间戳与随机数的组合区分不同的事务。
[0118]
举例来说,参见表5,表5是一种第一序列号请求包含内容的示例:
[0119]
源路由字段事务标识符字段序列号字段x

y

z

x1.1.1.1,2019/12/12 12:30:29:0002utc0
[0120]
表5
[0121]
表5对应的第一序列号请求中,至少包含源路由字段、事务标识符字段和序列号字段,其中,源路由字段中的内容(x

y

z

x)为第一序列号请求中的第一遍历路径信息;事务标识符字段中的内容(1.1.1.1,2019/12/12 12:30:29:0002utc)为第一序列号请求中的第一事务标识;事务标识符字段中的ip地址(1.1.1.1),是第一序列号请求设备的ip地址,可以作为第一序列号请求中的第一返回路由信息;序列号字段中的内容(0)为第一序列号请求中的第一报文序列号。除了上述至少包含的序列号字段外,可选的,第一序列号请求还可以包含起始网络设备字段,可以指示从第一序列号请求设备接收第一序列号请求的第一起始网络设备。可选的,第一序列号请求中还可以包含第一集合标识,用于指示集合标识字段,用于指示第一起始网络设备对应的第一序列号取值集合。可以理解的是,若第一序列号请求中不包含起始网络设备字段,也不包含集合标识字段,那么可以通过源路由字段中的内容,确定出第一遍历路径的第一跳网络设备,该第一跳网络设备即为第一序列号请求对应的第一起始网络设备,进而可以确定出第一起始网络设备对应的第一序列号取值集合。
[0122]
第一网络设备在将第一序列号请求中的第一报文序列号与第一网络设备的第一设备序列号进行比较之后,在第一报文序列号大于第一设备序列号的情况下,对第一报文序列号不做处理,根据第一序列号请求的请求路由信息发送该第一序列号请求,这里,第一网络设备根据请求路由信息发送第一序列号请求的具体方式,可以参照在第一报文序列号不大于第一设备序列号的情况下,第一网络设备对第一序列号请求处理后的发送方式,此处不再赘述。
[0123]
第一网络设备不仅要对第一序列号请求进行处理,还需要对第一网络设备的第一设备序列号进行更新,一种实现方式中,第一网络设备可以将第一设备序列号的取值,更新为第一网络设备将要发送的第一序列号请求中的第一报文序列号的取值。具体的,若第一网络设备接收到的第一序列号请求中的第一报文序列号,大于第一网络设备当前的第一设备序列号,第一网络设备将第一设备序列号的取值,更新为当前第一报文序列号当前的取值。若第一网络设备接收到的第一序列号请求中的第一报文序列号,不大于第一网络设备当前的第一设备序列号,第一网络设备将第一网络设备的取值,更新为当前确定到的第一
序列号取值。可选的,上述对第一设备序列号的更新,可以是在第一网络设备本次发送第一序列号请求之前执行的。
[0124]
为进一步理解本技术实施例中的序列号确定方法,下面结合图8-图13,通过针对事务a和事务b的序列号的申请,举例介绍该方法。在本示例中,序列号确定系统包含网络设备x、网络设备y和网络设备z三个网络设备,网络设备x连接的序列号请求设备包含请求设备1,网络设备y连接的序列号请求设备包含请求设备2。网络设备x、网络设备y和网络设备z对应的序列号取值集合分别由首项为1,公差为5的等差数列、首项为2,公差为5的等差数列、以及首项为3,公差为5的等差数列构成,网络设备x、网络设备y和网络设备z当前的设备序列号分别为x=15、y=15和z=25。下面按照时间顺序介绍针对事务a和事务b的序列号的申请。
[0125]
参见图8,图8是本技术实施例提供的一种序列号确定示意图,如图8中所示,请求设备1在检测到事务a后,生成针对事务a的序列号请求(即报文1),其中,报文1中携带的序列号字段中的序列号为0,请求设备1将报文1发送给网络设备x。
[0126]
参见图9,图9是本技术实施例提供的另一种序列号确定示意图,如图9中所示,网络设备x接收到报文1后,修改报文1中的源路由字段;由于报文1中的序列号0小于网络设备x当前的序列号15,因此网络设备x获取报文1的起始网络设备(即网络设备x)对应的序列号取值集合中,大于15的最小的序列号取值,即16,因此网络设备x将报文1的序列号字段修改为16,并将自身的设备序列号修改为16;进而网络设备x按照报文1当前的源路由字段,将报文1发送网络设备y。
[0127]
其中,在网络设备y接收到网络设备x发送的报文1之前,请求设备2检测到了事务b,并针对事务b生成了序列号请求(即报文2),其中,报文2中携带的序列号字段中的序列号为0。请求设备2将报文2发送给网络设备y。
[0128]
参见图10,图10是本技术实施例提供的另一种序列号确定示意图,如图10中所示,网络设备y在接收到报文1之前,接收到了报文2,网络设备y对报文2中的源路由字段进行修改;由于报文2中的序列号0小于网络设备y当前的序列号25,因此网络设备y获取报文2的起始网络设备(即网络设备y)对应的序列号取值集合中,大于25的最小的序列号取值,即27,网络设备y将报文2的序列号修改为27,并将自身的设备序列号修改为27;进而网络设备y按照报文2的当前的源路由字段,将报文2发送给网络设备z。
[0129]
网络设备y在接收到报文2之后接收到了网络设备x发送的报文1,网络设备x对报文1中的源路由字段进行修改;由于报文1中的序列号16小于网络设备当前的序列号27,因此网络设备y获取报文1的起始网络设备(即网络设备x)对应的序列号取值集合中,大于27的最小的序列号取值,即31,网络设备y将报文1的序列号修改为31,还将自身的设备序列号修改为31;进而网络设备y按照报文1当前的源路由字段,将报文1发送给网络设备z。
[0130]
参见图11,图11是本技术实施例提供的另一种序列号确定示意图,如图11中所示,在报文1和报文2从网络设备y到网络设备x的传输过程中,报文2比报文1先到达网络设备z。网络设备z接收到报文2后,对报文2中的源路由字段进行修改;由于报文2中的序列号27大于网络设备z当前的序列号15,因此,网络设备z将自身的设备序列号修改为27,进而按照报文2当前的源路由字段,将报文2发送给网络设备x。
[0131]
网络设备x接收到报文1后,对报文1的源路由字段进行修改,由于报文1中的序列
号31大于网络设备z当前的设备序列号27,因此,网络设备z将自身的设备序列号修改为31,进而按照报文1当前的源路由字段,将报文1发送给网络设备x。
[0132]
参见图12,图12是本技术实施例提供的另一种序列号确定示意图,如图12中所示,在报文1和报文2从网络设备z向网络设备x传输的过程中,报文1比报文2先到达网络设备x。网络设备x接收到报文2后,确定自身当前是报文1的遍历路径中的最后一跳网络设备,将源路由字段从报文1中弹出;由于报文1中的序列号31大于网络设备x当前的序列号16,因此网络设备x将自身的序列号修改为31,进而按照报文1的事务标识符字段中请求设备1的ip地址(1.1.1.1),将当前的报文1发送给请求设备1。
[0133]
网络设备y接收到报文1后,对报文2的源路由字段进行修改,由于报文2中的序列号27小于网络设备x当前的序列号31,因此网络设备x获取报文2的起始网络设备(即网络设备y)对应的序列号取值集合中,大于31的最小的序列号取值,即32,网络设备x将报文2的序列号修改为32,并将自身的设备序列号修改为32;进而网络设备y按照报文2的当前的源路由字段,将报文2发送给网络设备y。
[0134]
参见图13,图13是本技术实施例提供的又一种序列号确定示意图,如图13中所示,请求设备1接收到的报文1中的序列号为31,请求设备1根据报文1的事务标识符字段确定,序列号31为序列号确定系统为事务a分配的全局唯一的序列号。
[0135]
网络设备z接收到报文2后,确定自身当前是报文2的遍历路径中的最后一跳网络设备,将源路由字段从报文2中弹出;由于报文2中的序列号32大于网络设备y当前的序列号31,因此网络设备y将自身的序列号修改为32,进而按照报文2的事务标识符字段中请求设备2的ip地址(2.2.2.2),将当前的报文2发送给请求设备2。请求设备2接收到报文2中的序列号为32,请求设备2根据报文2的事务标识符字段确定,序列号32为序列号确定系统为事务b分配的全局唯一的序列号。
[0136]
若在上述示例中,网络设备x、网络设备y和网络设备z的序列号取值结合,不是根据等差数列确定的取值大小分散较为均匀的序列号取值集合,而是取值大小分散不均匀的序列号取值集合,例如,网络设备x对应的序列号取值集合为{1,2,3,4,5,

,97,98,99,100,301,302,303,

},网络设备y对应的序列号取值集合为{101,102,103,104,105,

,197,198,199,200,401,402,403,

},网络设备z对应的序列号取值集合为{201,202,203,204,205,

,297,298,299,300,501,502,503,

}。
[0137]
那么在图10对应的过程中,网络设备y在接收到报文1之前,接收到了报文2,由于报文2中的序列号0小于网络设备y当前的序列号25,因此网络设备y获取报文2的起始网络设备(即网络设备y)对应的序列号取值集合中,大于25的最小的序列号取值,即101,网络设备y将报文2的序列号修改为101,将自身的设备序列号修改为101,并将报文2发送给网络设备z。网络设备y在接收到报文2之后接收到了网络设备x发送的报文1,由于报文1中的序列号16小于网络设备当前的序列号101,因此网络设备y获取报文1的起始网络设备(即网络设备x)对应的序列号取值集合中,大于101的最小的序列号取值,即301,网络设备y将报文1的序列号修改为301,还将自身的设备序列号修改为301,并将报文1发送给网络设备z。不难理解,当网络设备x再接收到其他序列号请求时,发送出去的该序列号请求必然大于301,这就造成了网络设备x的序列号确定集合中17-100的这些序列号取值的浪费。
[0138]
本技术实施例中,第一设备序列号中记录的是第一网络设备当前所发送的所有序
列号请求中包含的最大的报文序列号,也就是第一网络设备当前已知的最大的报文序列号,在第一序列号请求中的报文序列号不大于第一网络设备的第一设备序列号的情况下,根据第一设备序列号从第一序列号取值集合中确定用于更新第一报文序列号的第一序列号取值,保证了更新后的第一报文序列号大于第一网络设备当前已知的最大的报文序列号,那么,经过第一遍历路径中各个网络设备的遍历,保证了最终返回第一序列号请求设备的第一报文序列号,大于序列号确定系统中各个网络设备在接收到第一序列号请求之前已知的最大报文序列号,序列号确定系统实现了按照数值严格递增的顺序,为第一序列号请求分配了序列号,为第一序列号请求对应的事务确定能全局唯一定序的第一报文序列号,实现了全局事务的次序一致性。
[0139]
在本技术序列号确定方法的序列号确定系统运行过程中,序列号确定系统中任意网络设备可能会出现停止运行,之后又恢复运行的情况,在网络设备恢复运行后,网络设备在停止运行之前记录的设备序列号可能丢失,可以参阅图14,图14是本技术实施例提供的一种业务恢复的流程示意图,通过图14所示的方法流程,可以保证该网络设备恢复运行后,序列号确定系统能够按照严格递增的顺序为事务准确地分配序列号,如图14所示,所述业务恢复流程可以包括步骤s501-s506。
[0140]
s501,第一网络设备向至少一个第二序列号请求设备广播第二上报指令。
[0141]
这里,第一网络设备是序列号确定系统中停止运行并恢复运行的网络设备,这里,第一网络设备可以是由于故障因素而停止运行,在故障排除后恢复运行,也可以是由于扩展升级等因素暂时脱离序列号确定系统,在升级完成后重新加入序列号确定系统中,等等,具体的停止运行因素此处不做限定。
[0142]
若序列号确定系统中的遍历路径信息是由序列号请求设备写入序列号请求的,那么在第一网络设备停止运行之后,可以向序列号请求设备发送第一控制指令,第一控制指令用于使序列号请求设备在序列号请求写入遍历路径信息时,写入包含序列号确定系统中除第一网络设备以外,其他各个网络设备的遍历路径的信息。若序列号确定系统中的遍历路径信息是由网络设备写入序列号请求的,那么在第一网络设备停止运行之后,可以向序列号确定系统中除第一网络设备以外,其他各个网络设备发送第二控制指令,第二控制指令用于使其他各个网络设备在序列号请求写入遍历路径信息时,写入包含序列号确定系统中除第一网络设备以外,其他各个网络设备的遍历路径的信息。进而,序列号请求可以在序列号确定系统中的其他各个网络设备之间遍历,其他各个网络设备可以继续按照本技术的序列号确定方法为序列号请求设备分配序列号。上述第一控制指令或第二控制指令可以由对序列号确定系统中各个网络设备进行管理的控制器发送,可以通过序列号确定系统的管理员进行配置,等等,具体方式此处不做限定。
[0143]
第二序列号请求设备是接收到第一网络设备发送的序列号请求的序列号请求设备,也就是第二序列号请求设备在第一网络设备本次停止运行之前,向序列号确定系统申请过序列号(即发送过序列号请求),并从第一网络设备接收到序列号确定系统返回的序列号(即经过序列号系统处理后的序列号请求)。
[0144]
序列号确定系统在运行过程中,可以记录各个第二序列号请求设备的通信标识(如ip地址)。例如,可以通过第一网络设备记录第二序列号请求设备的通信标识,第一网络设备可以将该通信标识写入断电不丢失的存储介质中,防止在第一网络设备停止运行后而
丢失;又如,序列号确定系统中可以部署有对各个网络设备进行管理、监控等功能的控制器,可以通过该控制器记录第一网络设备的通信标识,等等,具体记录方式此处不做具体限定。
[0145]
进而,第一网络设备在可以获取第二序列号请求设备的通信标识,并根据该通信地址向第二序列号发送第二上报指令,其中,第二上报指令是用于触发第二序列号请求设备向第一网络设备发送第二报文序列号的指令,第二报文序列号是第二序列号请求设备当前被分配的最大的报文序列号。
[0146]
s502,第二序列号请求设备根据第二上报指令,向第一网络设备发送第二报文序列号。
[0147]
其中,第二序列号请求设备每次在接收到序列号确定系统返回的序列号请求后,确定并记录当前从序列号确定系统中接收到的所有的序列号请求中最大的报文序列号(即第二报文序列号),进而在接收到第二上报指令后,将该第二报文序列号发送给第一网络设备。
[0148]
s503,第一网络设备确定取值最大的第二报文序列号,并根据取值最大的第二报文序列号,确定第一网络设备的第一设备序列号的取值。
[0149]
第一网络设备接收到各个第二序列号请求设备发送的第二报文序列号之后,从各个第二报文序列号中确定出取值最大的序列号,进而为第一设备序列号确定不小于上述取值最大的第二报文序列号的取值。一种实现方式中,可以将该最大的第二报文序列号的取值,确定为当前第一设备序列号的取值。
[0150]
可选的,若序列号确定系统中的遍历路径信息是由序列号请求设备写入序列号请求的,那么在s503之后,还可以向序列号请求设备发送第三控制指令,第三控制指令用于使序列号请求设备在序列号请求写入遍历路径信息时,写入包含当前序列号确定系统中各个网络设备以及第一网络设备的遍历路径的信息。若序列号确定系统中的遍历路径信息是由网络设备写入序列号请求的,那么在s503之后,可以向当前序列号确定系统中的各个网络设备以及第一网络设备发送第四控制指令,第四控制指令用于使网络设备在序列号请求写入遍历路径信息时,写入包含当前序列号确定系统中各个网络设备以及第一网络设备的遍历路径的信息。进而,第一网络设备重新加入了序列号确定系统,后续序列号确定系统接收到的序列号请求,可以在序列号确定系统中的各个网络设备之间遍历,各个网络设备可以继续按照本技术的序列号确定方法为序列号请求设备分配序列号。上述第三控制指令或第四控制指令可以由对序列号确定系统中各个网络设备进行管理的控制器发送,可以通过序列号确定系统的管理员进行配置,等等,具体方式此处不做限定。
[0151]
本技术实施例中,在第一网络设备在停止运行后,序列号确定系统中除第一网络设备的各个网络设备可以继续按照本技术的序列号确定方法,对序列号请求进行遍历和处理,完成序列号的严格递增的分配;在第一网络设备恢复运行后,通过根据取值最大的第二报文序列号对自身的第一设备序列号进行的更新,即可将找回在停止运行之前自身记录的最大的报文序列号,进而加入序列号确定系统的正常运行,按照本技术的序列号确定方法,对序列号请求进行遍历和处理,完成序列号的严格递增的分配。通过上述过程,实现了序列号确定系统的高容错机制,进而提高了序列号确定方法的可靠性。
[0152]
图14对应的业务恢复流程是基于记录了第二序列号请求设备的通信标识的情况
下实现的,在序列号确定系统运营过程中,未记录第二序列号请求设备的通信标识的情况下,可以参阅图15,图15是本技术实施例提供的另一种业务恢复的流程示意图,通过图15所示的方法流程,可以保证在未记录第二序列号请求设备的通信标识的情况下,网络设备停止运行并恢复运行后,序列号确定系统能够按照严格递增的顺序为事务准确地分配序列号,如图15所示,所述业务恢复流程可以包括步骤s601-606。
[0153]
s601,第一网络设备向至少一个第一序列号请求设备广播第一上报指令。
[0154]
其中,第一网络设备是序列号确定系统中的任意网络设备,第一网络设备可以是在序列号确定系统中的任意网络设备停止运行并恢复运行的情况下执行s601,也就是在序列号确定系统中的任意网络设备停止运行并恢复运行后,序列号确定系统中的任意网络设备均需要作为第一网络设备,执行s601-s606。
[0155]
第一序列号请求设备是当前与第一网络设备建立连接的序列号请求设备,第一上报指令用于触发第一序列号请求设备向第一网络设备发送第一序列号请求。
[0156]
在序列号确定系统中的任意网络设备停止运行后,可以向序列号请求设备发送第一控制指令,或向序列号确定系统中其他正常运行的网络设备发送第二控制指令,以保证当前接收到的序列号请求在序列号确定系统中有效正常运行的网络设备之间进行遍历,进而保证当前序列号系统分配序列号的准确性和可靠性。其中,第一控制指令或第二控制指令的发送方式可以分别参阅图14对应的实施例中s501中第一控制指令或第二控制指令的发送方式,此处不再赘述。
[0157]
在序列号确定系统中停止运行的网络设备恢复运行后,可以向序列号请求设备发送第三控制指令,或向当前序列号确定系统中的网络设备(包括第一网络设备)发送第二控制指令,以保证将恢复运行的网络设备加入当前接收到的序列号请求在序列号确定系统中的遍历路径,保证序列号确定系统分配序列号的准确性和可靠性。其中,第三控制指令或第四控制指令的发送方式可以分别参阅图14对应的实施例中s503中第三控制指令或第四控制指令的发送方式,此处不再赘述。
[0158]
s602,第一网络设备接收第一序列号请求设备发送的第一序列号请求。
[0159]
其中,接收到第一上报指令的第一序列号请求设备均向第一网络设备发送第一序列号请求,第一序列号请求中的第一报文序列号是各个第一序列号请求设备当前被分配的最大的报文序列号。
[0160]
一种实现方式中,第一网络设备在接收到的所有第一序列号请求设备在第一上报指令触发下,发送的第一序列号请求之后,均执行s602之后的步骤,另一种实现方式中,第一网络设备可以在接收到所有第一序列号请求设备在第一上报指令触发下,发送的第一序列号请求之后,确定出其中第一序列号取值最大的第一序列号请求,仅按照该第一序列号取值最大的第一序列号请求执行s602之后的步骤。
[0161]
s603,第一网络设备在第一报文序列号不大于当前第一设备序列号的情况下,根据第一设备序列号,从第一序列号请求对应的第一序列号取值集合中确定第一序列号取值。
[0162]
其中,若第一网络设备不是序列号确定系统中本次停止运行并恢复运行的网络设备,那么第一网络设备当前的第一设备序列号可以是第一网络设备通过第一设备序列号记录的第一网络设备当前所发送的所有序列号请求中包含的最大的报文序列号。
[0163]
若第一网络设备是序列号确定系统中本次停止运行并恢复运行的网络设备,那么,在一种实现方式中,第一网络设备在恢复运行后,可以设置默认的网络设备序列号,如设置为0,进而可以与第一序列号请求中的第一报文序列号进行比较。另一种实现方式中,也可以根据第一网络设备广播第一上报指令后,接收到的第一个第一序列号请求中的第一报文序列号,确定第一网络设备的第一设备序列号,进而再次接收到其他第一序列号请求设备根据第一上报指令发送的第一序列号请求后,按照该第一设备序列号与第一报文序列号进行比较。
[0164]
第一网络设备根据第一设备序列号确定第一序列号取值的方式,可以参与图4对应的实施例中步骤s402对应的实现方式,此处不再赘述。
[0165]
s604,第一网络设备根据所述第一序列号取值更新所述第一报文序列号的取值,以及所述第一设备序列号的取值。
[0166]
一种实现方式中,第一网络设备将第一序列号请求中的第一报文序列号和第一设备序列号的取值均更新为第一序列号取值。
[0167]
s605,第一网络设备在第一报文序列号大于当前第一设备序列号的情况下,根据所述第一报文序列号的取值,更新所述第一设备序列号的取值。
[0168]
一种实现方式中,第一网络设备在第一报文序列号大于当前第一设备序列号的情况下,将第一设备序列号的取值,更新为第一报文序列号的取值。
[0169]
s606,第一网络设备根据第一序列号请求对应的请求路由信息,发送第一序列号请求。
[0170]
其中,第一网络设备发送的第一序列号请求中包含第一序列号请求对应的请求路由信息,该路由请求信息可以是第一网络设备写入第一序列号请求的,也可以是第一序列号请求设备写入第一序列号请求的。
[0171]
第一网络设备更新自身的第一设备序列号之后,根据请求路由信息发送第一序列号请求,在第一报文序列号不大于当前第一设备序列号的情况下,第一网络设备发送的是步骤s604更新后的第一序列号请求;在第一报文序列号大于当前第一设备序列号的情况下,第一网络设备发送的是从第一序列号请求设备接收的第一序列号请求。
[0172]
第一序列号请求对应的请求路由信息可以指示第一序列号请求在序列号确定系统中各个网络设备之间的第一遍历路径信息,还可以指示第一遍历路径遍历完成之后,向第一序列号请求设备发送第一序列号请求的第一返回路由。因此,第一网络设备可以根据请求路由信息确定第一遍历路径中的下一跳网络设备,进而向下一跳网络设备发送第一序列号请求,下一跳网络设备接收到第一序列号请求后,执行步骤s603、s604和s606中第一网络设备执行的步骤,或者执行步骤s605和s606中第一网络设备执行的步骤,直到第一序列号请求传至第一遍历路径的最后一跳网络设备,最后一跳网络设备执行s603和s604中第一网络设备执行的步骤,或者执行步骤s605中第一网络设备执行的步骤,上述步骤执行完成后,可以将第一序列号请求丢弃,也可以将第一序列号请求发送至第一序列号请求设备,由第一序列号请求设备进行丢弃。
[0173]
按照上述过程,在序列号确定系统中,所有第一网络设备的第一序列号请求均完成遍历的情况下,序列号确定系统可以恢复正常运行,当序列号确定系统再次接收到序列号请求时,可针对序列号请求进行序列号分配。
[0174]
本技术实施例中,在序列号确定系统中任意网络设备停止运行后,序列号确定系统中其他网络设备可以继续按照本技术的序列号确定方法,对序列号请求进行遍历和处理,完成序列号的严格递增,在停止运行的网络设备恢复运行后,在序列号确定系统中全局广播第一上报指令,进而对各个序列号请求设备发送的、携带被分配的最大报文序列号的序列号请求,进行遍历,通过该遍历过程即可找回在序列号确定系统中网络设备停止运行后,可能丢失的最大报文序列号,进而在序列号系统再次接收到序列号请求时,按照严格递增的顺序针对序列号请求进行序列号分配。通过上述过程,实现了序列号确定系统的高容错机制,进而提高了序列号确定方法的可靠性。
[0175]
上文主要从方法的角度对本技术实施例提供的方案进行了介绍。可以理解的是,序列号确定系统为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本技术中所公开的实施例描述的各示例的组件及步骤,本技术实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的技术方案的范围。
[0176]
下面介绍本技术实施例提供的序列号确定方法的相关装置,参见图16,图16是本技术实施例提供的一种第一网络设备的结构示意图。该第一网络设备通过其内置的组件可以执行如图4图14或图15对应的方法实施例。如图16所示,所述第一网络设备16可以至少包括收发模块161和处理模块162,其中:
[0177]
收发模块161,用于接收第一序列号请求,所述第一序列号请求包含第一报文序列号,所述第一网络设备是序列号确定系统包含的至少两个网络设备中的任意一个;
[0178]
处理模块162,用于在所述第一报文序列号不大于第一设备序列号的情况下,根据所述第一设备序列号,从所述第一序列号请求对应的第一序列号取值集合中确定第一序列号取值,所述第一设备序列号用于记录所述第一网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,所述第一序列号取值集合包含多个不相等的序列号取值,所述第一序列号取值是所述第一序列号取值集合中,大于所述第一设备序列号的一个序列号取值;
[0179]
所述处理模块162,还用于根据所述第一序列号取值更新所述第一报文序列号;
[0180]
所述收发模块161,还用于根据所述第一序列号请求的请求路由信息,发送所述第一报文序列号更新之后的所述第一序列号请求,所述请求路由信息用于指示所述第一序列号请求在所述序列号确定系统中各个网络设备之间的第一遍历路径,以及指示在所述第一遍历路径遍历完成之后向第一序列号请求设备发送所述第一序列号请求的第一返回路由,所述第一序列号请求设备是向所述序列号确定系统中的网络设备发送所述第一序列号请求的序列号请求设备。
[0181]
可选的,所述第一序列号取值是所述第一序列号取值集合中,大于所述第一设备序列号的最小序列号取值。
[0182]
可选的,所述第一序列号请求中包含第一集合标识,所述第一集合标识用于指示所述第一序列号请求对应的所述第一序列号取值集合。
[0183]
可选的,所述序列号确定系统包含至少两个起始网络设备,所述起始网络设备是
用于从所述序列号确定系统以外的序列号请求设备接收序列号请求的网络设备;
[0184]
所述起始网络设备有各自对应的序列号取值集合,所述序列号取值集合均包含多个不相等的序列号取值,且各个所述序列号取值集合之间不存在相同的序列号取值;
[0185]
所述第一序列号取值集合是根据所述第一序列号请求中包含的第一起始网络设备的标识确定的,所述第一序列号取值集合是所述第一起始网络设备对应的序列号取值集合,所述第一起始网络设备是所述序列号确定系统中从所述第一序列号请求设备接收所述第一序列号请求的网络设备。
[0186]
可选的,所述序列号取值集合中的序列号取值构成等差数列,各个所述序列号取值集合对应的等差数列是首项不相同,且公差相同的等差数列,所述序列号取值集合对应的等差数列的公差不小于所述序列号确定系统中所述起始网络设备的数量。
[0187]
可选的,所述第一起始网络设备是所述第一遍历路径的起点,所述序列号确定系统中的各个网络设备在所述第一遍历路径均出现一次。
[0188]
可选的,所述收发模块161,具体用于:
[0189]
在所述第一网络设备是所述第一遍历路径中的最后一跳网络设备的情况下,所述第一网络设备将所述第一报文序列号更新之后的所述第一序列号请求,发送给所述第一序列号请求设备。
[0190]
可选的,所述收发模块161,具体用于:
[0191]
在所述第一网络设备不是所述第一遍历路径中的最后一跳网络设备的情况下,根据所述请求路由信息,确定第二网络设备,所述第二网络设备是所述第一遍历路径中所述第一网络设备的下一跳网络设备;
[0192]
将所述第一报文序列号更新之后的所述第一序列号请求,发送给所述第二网络设备。
[0193]
可选的,所述收发模块161,还用于在所述第一报文序列号的取值大于所述第一设备序列号的取值的情况下,根据所述第一序列号请求的请求路由信息发送所述第一序列号请求。
[0194]
可选的,所述处理模块162,还用于将所述第一设备序列号的取值,更新为所述收发模块161发送的所述第一序列号请求中所述第一报文序列号的取值。
[0195]
可选的,所述收发模块161,还用于在所述序列号确定系统中的任意网络设备停止运行并恢复运行的情况下,向至少一个所述第一序列号请求设备广播第一上报指令,所述第一序列号请求设备是当前与所述第一网络设备建立连接的序列号请求设备,所述第一上报指令用于触发各个所述第一序列号请求设备向所述第一网络设备发送所述第一序列号请求,所述第一序列号请求中的第一报文序列号是所述第一序列号请求设备当前被分配的最大的报文序列号。
[0196]
可选的,所述收发模块161,还用于在所述第一网络设备停止运行并恢复运行的情况下,根据序列号请求记录,向至少一个第二序列号请求设备发送第二上报指令,所述序列号请求记录用于记录从所述第一网络设备接收到序列号请求的第二序列号请求设备,所述第二上报指令用于触发所述第二序列号请求设备向所述第一网络设备发送第二报文序列号,所述第二报文序列号是各个所述第二序列号请求设备当前被分配的最大的报文序列号;
[0197]
所述处理模块162,还用于根据取值最大的所述第二报文序列号,确定所述第一设备序列号的取值。
[0198]
可以理解的,本技术实施例中的第一网络设备16可以实现图4、图14和图15所示实施例中的步骤。关于图16的第一网络设备包括的功能组件的具体实现方式及相应的有益效果,可参考前述图4、图14和图15的实施例的具体介绍。
[0199]
参阅图17,图17是本技术实施例提供的另一种第一网络设备的结构示意图,如图17所示,所述第一网络设备17包括:处理器171、通信接口172和存储器173,处理器171、通信接口172和存储器173通过总线174耦合。
[0200]
处理器171可以是一个或多个中央处理器(central processing unit,cpu),在处理器171是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。
[0201]
处理器171用于读取存储器173中存储的程序,与通信接口172配合执行本技术上述实施例中由第一网络设备17执行的方法的部分或全部步骤。
[0202]
存储器173可包括但不限于随机存储记忆体(random access memory,ram)、可擦除可编程只读存储器(erasable programmable rom,eprom)、只读存储器(read-only memory rom)或便携式只读存储器(compact disc read-only memory,cd-rom)等等,该存储器173用于存储程序,处理器171可以读取存储器173中存储的程序,执行本技术上述实施例中由第一网络设备17执行的方法的部分或全部步骤。
[0203]
举例来说,所述通信接口172,可以用于接收第一序列号请求,所述第一序列号请求包含第一报文序列号,所述第一网络设备是序列号确定系统包含的至少两个网络设备中的任意一个;还可以用于根据所述第一序列号请求的请求路由信息,发送所述第一报文序列号更新之后的所述第一序列号请求,所述请求路由信息用于指示所述第一序列号请求在所述序列号确定系统中各个网络设备之间的第一遍历路径,以及指示在所述第一遍历路径遍历完成之后向第一序列号请求设备发送所述第一序列号请求的第一返回路由,所述第一序列号请求设备是向所述序列号确定系统中的网络设备发送所述第一序列号请求的序列号请求设备,等;
[0204]
所述处理器171,可以用于在所述第一报文序列号不大于第一设备序列号的情况下,根据所述第一设备序列号,从所述第一序列号请求对应的第一序列号取值集合中确定第一序列号取值,所述第一设备序列号用于记录所述第一网络设备当前所发送的所有序列号请求中包含的最大的报文序列号,所述第一序列号取值集合包含多个不相等的序列号取值,所述第一序列号取值是所述第一序列号取值集合中,大于所述第一设备序列号的一个序列号取值;还可以用于根据所述第一序列号取值更新所述第一报文序列号,等。
[0205]
在一些可能的实现方式中,所述第一序列号取值是所述第一序列号取值集合中,大于所述第一设备序列号的最小序列号取值。
[0206]
在一些可能的实现方式中,所述第一序列号请求中包含第一集合标识,所述第一集合标识用于指示所述第一序列号请求对应的所述第一序列号取值集合。
[0207]
在一些可能的实现方式中,所述序列号确定系统包含至少两个起始网络设备,所述起始网络设备是用于从所述序列号确定系统以外的序列号请求设备接收序列号请求的网络设备;
[0208]
所述起始网络设备有各自对应的序列号取值集合,所述序列号取值集合均包含多
个不相等的序列号取值,且各个所述序列号取值集合之间不存在相同的序列号取值;
[0209]
所述第一序列号取值集合是根据所述第一序列号请求中包含的第一起始网络设备的标识确定的,所述第一序列号取值集合是所述第一起始网络设备对应的序列号取值集合,所述第一起始网络设备是所述序列号确定系统中从所述第一序列号请求设备接收所述第一序列号请求的网络设备。
[0210]
在一些可能的实现方式中,所述序列号取值集合中的序列号取值构成等差数列,各个所述序列号取值集合对应的等差数列是首项不相同,且公差相同的等差数列,所述序列号取值集合对应的等差数列的公差不小于所述序列号确定系统中所述起始网络设备的数量。
[0211]
在一些可能的实现方式中,所述第一起始网络设备是所述第一遍历路径的起点,所述序列号确定系统中的各个网络设备在所述第一遍历路径均出现一次。
[0212]
在一些可能的实现方式中,所述通信接口172可以具体用于:在所述第一网络设备是所述第一遍历路径中的最后一跳网络设备的情况下,将所述第一报文序列号更新之后的所述第一序列号请求,发送给所述第一序列号请求设备。
[0213]
在一些可能的实现方式中,所述处理器171可以具体用于在所述第一网络设备不是所述第一遍历路径中的最后一跳网络设备的情况下,根据所述请求路由信息,确定第二网络设备,所述第二网络设备是所述第一遍历路径中所述第一网络设备的下一跳网络设备;
[0214]
所述通信接口172可以具体用于将所述第一报文序列号更新之后的所述第一序列号请求,发送给所述第二网络设备。
[0215]
在一些可能的实现方式中,所述通信接口172可以具体用于在所述第一报文序列号的取值大于所述第一设备序列号的取值的情况下,根据所述第一序列号请求的请求路由信息发送所述第一序列号请求。
[0216]
在一些可能的实现方式中,所述处理器171,还可以用于将所述第一设备序列号的取值,更新为所述收发模块发送的所述第一序列号请求中所述第一报文序列号的取值。
[0217]
在一些可能的实现方式中,所述通信接口172,还可以用于在所述序列号确定系统中的任意网络设备停止运行并恢复运行的情况下,向至少一个所述第一序列号请求设备广播第一上报指令,所述第一序列号请求设备是当前与所述第一网络设备建立连接的序列号请求设备,所述第一上报指令用于触发各个所述第一序列号请求设备向所述第一网络设备发送所述第一序列号请求,所述第一序列号请求中的第一报文序列号是所述第一序列号请求设备当前被分配的最大的报文序列号。
[0218]
在一些可能的实现方式中,所述通信接口172,还可以用于在所述第一网络设备停止运行并恢复运行的情况下,根据序列号请求记录,向至少一个第二序列号请求设备发送第二上报指令,所述序列号请求记录用于记录从所述第一网络设备接收到序列号请求的第二序列号请求设备,所述第二上报指令用于触发所述第二序列号请求设备向所述第一网络设备发送第二报文序列号,所述第二报文序列号是各个所述第二序列号请求设备当前被分配的最大的报文序列号;
[0219]
所述处理器171,还可以用于根据取值最大的所述第二报文序列号,确定所述第一设备序列号的取值。
[0220]
参见图18,图18是本技术实施例提供的一种芯片的结构示意图。如图18所示,芯片18可包括:处理器1801,以及耦合于处理器1801的一个或多个通信接口1802。其中:
[0221]
处理器1801可用于读取和执行计算机可读指令。具体实现中,处理器1801可主要包括控制器、运算器和寄存器。其中,控制器主要负责指令译码,并为指令对应的操作发出控制信号。运算器主要负责执行定点或浮点算数运算操作、移位操作以及逻辑操作等,也可以执行地址运算和转换。寄存器主要负责保存指令执行过程中临时存放的寄存器操作数和中间操作结果等。具体实现中,处理器1801的硬件架构可以是专用集成电路(application specific integrated circuits,asic)架构、mips架构、arm架构或者np架构等等。处理器1801可以是单核的,也可以是多核的。
[0222]
通信接口1802可用于输入待处理的数据至处理器1801,并且可以向外输出处理器1801的处理结果。例如,通信接口1802可以是通用输入输出(general purpose input output,gpio)接口,可以和多个外围设备(如显示器(lcd)、摄像头(camera)、射频(radio frequency,rf)模块等等)连接。通信接口1802通过总线1803与处理器1801相连。
[0223]
本技术中,处理器1801可用于从存储器中调用本技术的一个或多个实施例提供的序列号确定方法的实现程序,并执行该程序包含的指令。通信接口1802可用于输出处理器1801的执行结果。本技术中,通信接口1802可具体用于输出处理器1801处理得到的第一报文序列号更新后的第一序列号请求。关于本技术的一个或多个实施例提供的序列号确定方法可参考前述图4、图14和图15所示各个实施例,这里不再赘述。
[0224]
需要说明的,处理器1801、通信接口1802各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
[0225]
本技术实施例还提供了一种序列号确定系统,该序列号确定系统包括至少两个上述图16对应实施例中的第一网络设备16,以实现本技术实施例所涉及的序列号确定方法。
[0226]
本技术实施例还提供了另一种序列号确定系统,该序列号确定系统包括至少两个上述图17对应实施例中的第一网络设备17,以实现本技术实施例所涉及的序列号确定方法。
[0227]
在本技术实施例中还提供了一种计算机存储介质,可以用于存储图17所示实施例中第一网络设备17所用的计算机软件指令,其包含用于执行上述实施例中为第一网络设备17所设计的程序。该存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
[0228]
在本技术实施例中还提供了一种计算机程序产品,该计算机产品被第一网络设备运行时,可以执行上述图16所示实施例中为第一网络设备所设计的序列号确定方法。
[0229]
本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序或特定数量。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0230]
本领域普通技术人员可以理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1