一种服务器节点间的链路切换方法、装置及电子设备与流程

未命名 10-08 阅读:62 评论:0


1.本技术涉及数据存储领域,尤其涉及一种服务器节点间的链路切换方法、装置及电子设备。


背景技术:

2.在分布式存储系统中,服务器节点间通过通信链路来实现网络通信。为保证网络连接的冗余性,消除网络连接的单点故障,通常在服务器节点间设置多条物理链路。在实际应用中,可由软件管理多条链路,当服务器节点间传输数据的链路出现故障时,可将服务器节点间的通信链路由故障的链路切换为正常链路,以保证服务器节点间的正常通信。
3.通常,通过探测报文来监测通信链路是否存在故障,例如,服务器节点1向服务器节点2发送数据报文,如果服务器节点1未在保活时长内接收到服务器节点2针对数据报文所返回的响应报文,则确定服务器节点1与服务器节点2之间的通信链路发生了故障。
4.然而,在相关技术中,保活时长通常设置得较长,通信链路故障的发现时间较长,导致通信业务出现卡顿,从而降低了上层应用(例如,数据库、文件系统)的业务处理性能。


技术实现要素:

5.有鉴于此,本技术实施例提供一种服务器节点间的链路切换方法、装置及电子设备,以及时发现服务器节点间存在故障的链路,保证服务器节点间通信业务的连续性。
6.根据本技术实施例的第一方面,提供一种服务器节点间的链路切换方法,应用于分布式全闪存存储系统中的第一服务器节点,第一服务器节点通过通信链路与第二服务器节点通信,通信链路至少包括第一链路和第二链路,该方法包括:在当前时刻通过第一链路向第二服务器节点发送目标数据处理报文,根据目标数据处理报文的大小以及平均报文响应时长确定目标数据处理报文所对应的第一保活时长,其中,平均报文响应时长为在第一服务器节点发送目标数据处理报文的发送时间之前的预设时长内,第一服务器节点所发送的数据处理报文的报文响应时长的平均值;若在第一保活时长内,第一服务器节点未接收到第二服务器节点通过第一链路所反馈的针对目标数据处理报文的数据处理响应报文,则通过第二链路向第二服务器节点发送用于查询第二服务器节点处理目标数据处理报文的处理状态的状态查询指令;通过第二链路接收第二服务器节点针对状态查询指令所返回的报文处理状态,并根据报文处理状态确定第一链路是否存在故障,其中,报文处理状态至少包括表征第二服务器节点未接收到目标数据处理报文的未接收状态、表征第二服务器节点已接收目标数据处理报文但未完成响应的已接收状态,以及表征第二服务器节点已完成响应的已响应状态;若根据报文处理状态确定第一链路存在故障,则将第一服务器节点与第二服务器节点之间的通信链路由第一链路切换为第二链路。
7.根据本技术实施例的第二方面,提供一种服务器节点间的链路切换装置,应用于分布式全闪存存储系统中的第一服务器节点,第一服务器节点通过通信链路与第二服务器节点通信,通信链路至少包括第一链路和第二链路,该装置包括:保活时长确定模块,用于
在当前时刻通过第一链路向第二服务器节点发送目标数据处理报文,根据目标数据处理报文的大小以及平均报文响应时长确定目标数据处理报文所对应的第一保活时长,其中,平均报文响应时长为在第一服务器节点发送目标数据处理报文的发送时间之前的预设时长内,第一服务器节点所发送的数据处理报文的报文响应时长的平均值;状态查询模块,用于若在第一保活时长内,第一服务器节点未接收到第二服务器节点通过第一链路所反馈的针对目标数据处理报文的数据处理响应报文,则通过第二链路向第二服务器节点发送用于查询第二服务器节点处理目标数据处理报文的处理状态的状态查询指令;状态接收模块,用于通过第二链路接收第二服务器节点针对状态查询指令所返回的报文处理状态,并根据报文处理状态确定第一链路是否存在故障,其中,报文处理状态至少包括表征第二服务器节点未接收到目标数据处理报文的未接收状态、表征第二服务器节点已接收目标数据处理报文但未完成响应的已接收状态,以及表征第二服务器节点已完成响应的已响应状态;链路切换模块,用于若根据报文处理状态确定第一链路存在故障,则将第一服务器节点与第二服务器节点之间的通信链路由第一链路切换为第二链路。
8.根据本技术实施例的第三方面,提供一种电子设备,电子设备包括:处理器和存储器;其中,所述存储器,用于存储机器可执行指令;所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如第一方面所述的方法。
9.本技术实施例提供的技术方案可以包括以下有益效果:
10.在本实施例中,根据当前的数据处理报文的大小以及最近一段时长(即发送时间之前的预设时长)内的平均报文响应时长确定保活时长,进而根据保活时长来确定两个服务器节点间的链路是否存在故障,而最近一段时长内的平均报文响应时长表征了网络的变化情况,即本技术采用与网络变化相适应的保活时长来确定是否对服务器节点间的链路进行切换。而通过与网络变化相适应的保活时长,能够更加准确地确定通信链路是否存在故障,进而保证了通信业务的连续性。
11.另外,在第一服务器节点未在第一保活时长内接收到数据处理响应报文时,无法确定是通信链路发生了故障,还是第二服务器节点的数据处理性能发生了故障。对此,本技术通过另一条链路向第二服务器节点发送查询报文处理状态的指令,以使第二服务器节点通过另一条链路反馈的报文处理状态,进而第一服务器节点再结合报文处理状态来确定第一链路是否存在故障。即本技术兼顾到了两条链路的网络差异,降低了链路故障的误判,缩短了确认链路故障的时间,提高了通信链路故障判断的准确性,进而保证了通信业务的连续性。
附图说明
12.图1是本技术实施例示出的一种分布式存储系统的结构图。
13.图2是本技术实施例示出的一种分布式存储系统的结构图。
14.图3是本技术实施例示出的一种服务器节点间的链路切换方法的流程图。
15.图4是本技术实施例示出的一种服务器节点间的链路切换装置的框图。
16.图5是本技术实施例服务器节点间的链路切换装置所在电子设备的一种硬件结构图。
具体实施方式
17.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
18.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
19.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
20.接下来对本说明书实施例进行详细说明。
21.在描述本技术实施例提供的方法之前,先对能够实现本技术实施例所提供方法的分布式存储系统的结构图进行描述:
22.参见图1,图1是能够实现本技术实施例所提供方法的分布式存储系统的结构图。
23.如图1所示,该分布式存储系统中部署有多个服务器节点,任两个服务器节点间具有通信链路,两个服务器节点间通过通信链路进行数据通信,其中,服务器节点间的通信链路由多条链路组成,在实际的通信过程中,如果服务器节点间的某条链路出现故障,则可将服务器节点间的该故障的链路切换至其他链路,以保证服务器节点间的通信不间断。
24.作为一个实施例,在图1所示的存储系统中进行数据存储时,为了实现数据的冗余保护,通常在服务器节点间进行数据传输。例如,在图1中,服务器节点a接收到数据写入指令时,服务器节点a将待写入数据写入至服务器节点a所对应的存储区域中的存储单元中,并将该存储单元标记为lun-1。同时,服务器节点a也会将该待写入数据通过报文的形式经过通信链路传输至服务器节点b。服务器节点b在接收到服务器节点a发送的报文后,从报文中读取待写入数据,并将该待写入数据写入服务器节点b所对应的存储区域中的存储单元中,并将服务器节点b中存储有该待写入数据的存储单元标记为lun-1。进而,在服务器节点a的存储区域存在故障无法使用或者发生损坏导致存储区域内的数据发生丢失时,可以根据存储单元所对应的标记从服务器节点b的存储区域内读取数据,从而实现了数据的冗余保护。
25.在上述应用场景中,服务器节点间需通过通信链路进行数据通信,因此,保证服务器节点间的网络连接的冗余性,消除网络连接的单点故障具有重要的意义。通常,服务器节点间部署有两条物理链路,以保证服务器节点间的网络连接的冗余性。但如果发现服务器节点间的故障链路发现不及时,会导致服务器节点间通信业务的卡顿。
26.基于此,本技术对图1所示的分布式存储系统中的服务器节点间的数据传输进行了改进,如图2所示,即服务器节点a不仅可以向服务器节点b发送包含待写入数据的报文,还可向服务器节点b发送报文序号,以查询服务器节点b对服务器节点a所发送报文的报文
处理状态,进而,服务器节点a结合服务器节点b对服务器节点a所发送报文的响应时间以及服务器节点b对服务器节点a所发送报文的报文处理状态来准确判断两个服务器节点的链路是否存在故障,以及时切换故障链路,避免通信业务的卡顿,提高通信业务的连续性。
27.需要说明的是,在本实施例中,该分布式存储系统可以是分布式全闪存存储系统,也可以是非全闪存的存储系统。其中,全闪存是由固态存储介质构成的独立的存储阵列或设备,其具有较高的处理性能,以及较小的延迟波动。因此,在服务器节点间有多条链路在传输数据时,采用分布式全闪存存储系统能够快速的发现链路故障,并快速地进行链路的切换,进而能够提高服务器节点间的通信业务的连续性。
28.以下对本技术实施例所提供的方法如何实现服务器节点间的链路的及时切换进行解释说明。
29.参见图3,图3是本技术实施例示出的一种服务器节点间的链路切换方法的流程图,如上所述,该方法应用于分布式存储系统中,具体应用于分布式全闪存存储系统中的任一服务器节点(本实施例中称为第一服务器节点)。
30.如图3所示,该方法包括以下步骤:
31.步骤301,在当前时刻通过第一链路向第二服务器节点发送目标数据处理报文,根据目标数据处理报文的大小以及平均报文响应时长确定目标数据处理报文所对应的第一保活时长。
32.在本实施例中,第一服务器节点在接收到数据写入指令时,将待写入数据存储到第一服务器节点所对应的存储区域中,同时基于待写入数据构建数据处理报文(即上述的目标数据处理报文),并将携带有待写入数据的目标数据处理报文通过第一链路发送至第二服务器节点,以使第二服务器节点从目标数据处理报文中获取待写入数据,并将该待写入数据写入第二服务器节点的存储区域中。
33.另外,在本实施例中,保活时长表征了第一服务器节点从第二服务器节点接收响应消息的最大时间间隔,也即在第一服务器节点向第二服务器节点发送数据处理报文之后,第二服务器节点须在该保活时长内发送针对数据处理报文的响应报文,才能保证两个服务器节点间的连接;如果第二服务器节点未在该保活时长内发送响应报文,则两个服务器节点间的连接可能存在故障。
34.作为一个实施例,第一保活时长是变化的,并不是固定不变的。其中,第一服务器节点每向第二服务器节点发送一次数据处理报文,第一服务器节点便计算此次发送的数据处理报文所对应的第一保活时长。另外,第一服务器节点也可以每隔一定的时长(例如,预设时长)计算一次第一保活时长。第一服务器节点还可根据第一服务器节点通过第一链路向第二服务器节点发送的数据处理报文的数量来确定第一保活时长的计算频率,例如,在第一服务器节点通过第一链路向第二服务器节点发送的数据处理报文的数量达到预设数量时,便计算一次第一保活时长。对于第一保活时长的计算频率,本实施例不做具体限定。
35.另外,如上描述,在本实施例中,第一保活时长与第一服务器节点向第二服务器节点所发送的数据处理报文的大小以及最近一段时长内数据报文的平均报文响应时长有关,其中,平均报文响应时长为在第一服务器节点发送目标数据处理报文的发送时间之前的预设时长内,第一服务器节点所发送的数据处理报文的报文响应时长的平均值。
36.需要说明的是,最近一段时长内的平均报文响应时长表征了网络的变化情况,也
即本技术采用与网络变化相适应的保活时长来确定是否对服务器节点间的链路进行切换。而通过与网络变化相适应的保活时长,能够更加准确及时地确定服务器节点间的链路是否存在故障,进而保证了通信业务的连续性。
37.作为一个实施例,第一服务器节点可通过统计第一服务器节点在发送时间之前的预设时长内通过第一链路所接收到的第二服务器节点所反馈的数据处理响应报文的平均报文响应时长,以及第一服务器节点在发送时间之前的预设时长内通过第一链路所发送的数据处理报文的平均报文大小来确定第一保活时长。其中,第一保活时长可满足下式:
[0038][0039]
在上式中,t1为第一保活时长;t

为平均报文响应时长;d为目标数据处理报文的大小;d

为平均报文大小;n1为调整系数,n1为大于等于1的正整数,例如,3、5等,具体数值可根据实际需求进行设置,本实施例不做具体限定。
[0040]
作为一个实施例,上述的平均报文响应时长为最近一段时长内第一服务器节点所发送的数据处理报文对应的响应时长的平均值。
[0041]
具体的,首先根据第一服务器节点在发送时间之前的预设时长内通过第一链路所发送的数据处理报文的报文发送时间,以及第一服务器节点通过第一链路所接收到的第二服务器节点所反馈的数据处理响应报文的报文接收时间,确定第一服务器节点在预设时长内通过第一链路向第二服务器节点发送的数据处理报文的报文响应时长。例如,在第一服务器节点通过第一链路向第二服务器节点发送数据处理报文1之后,第一服务器节点记录数据处理报文1的发送时间,以及第一服务器节点接收第二服务器节点针对数据处理报文1所反馈的响应报文的接收时间,其中,发送时间与接收时间之间的间隔时长即为数据处理报文1所对应的报文响应时长。
[0042]
然后,第一服务器节点计算在发送时间之前的预设时长内,第一服务器节点通过第一链路向第二服务器节点发送的所有数据处理报文的报文响应时长的平均值,即可得到平均报文响应时长。
[0043]
对于平均报文大小,与平均报文响应时长类似,通过统计第一服务器节点在发送时间之前的预设时长内通过第一链路向第二服务器节点所发送的数据处理报文的大小,并计算发送时间之前的预设时长内数据处理报文的大小平均值,得到平均报文大小。例如,第一服务器节点在最近一段时长(即上述的发送时间之前的预设时长)内通过第一链路向第二服务器节点发送了10个数据处理报文,则这10个数据处理报文的大小的平均值即为平均报文大小。
[0044]
步骤302,若在第一保活时长内,第一服务器节点未接收到第二服务器节点通过第一链路所反馈的针对目标数据处理报文的数据处理响应报文,则通过第二链路向第二服务器节点发送用于查询第二服务器节点处理目标数据处理报文的处理状态的状态查询指令。
[0045]
在本实施例中,在第一服务器节点通过第一链路向第二服务器节点发送目标数据处理报文之后,如果第一服务器节点未在第一保活时长内接收到第二服务器节点反馈的数据处理响应报文,则第一链路可能存在故障,也可能是第一链路正常,第二服务器节点的性能下降未及时处理完导致第一服务器节点未能及时接收到数据处理响应报文。为确定第一服务器节点未能及时接收到数据处理响应报文的具体原因,第一服务器节点通过另一条正
常的链路(即第二链路)向第二服务器节点发送状态查询指令,以确定第二服务器节点处理目标数据处理报文的报文处理状态,进而根据报文处理状态来确定第一链路是否存在故障。
[0046]
作为一个实施例,第一服务器节点通过第二链路向第二服务器节点发送的状态查询指令中至少包括第一服务器节点所要查询的目标数据处理报文的标识,进而第二服务器节点可根据该目标数据处理报文的标识来确定第二服务器节点是否已处理该目标数据处理报文。
[0047]
可选的,上述目标数据处理报文的标识可以是报文序号,该报文序号表征了第一服务器节点通过第一链路向第二服务器节点发送数据处理报文的发送顺序中的位置,即第一服务器节点按照数据处理报文的发送顺序为每个数据处理报文分配一个报文序号。
[0048]
作为一个实施例,第一服务器节点可根据传输数据处理报文的链路的标识(例如,第一链路的标识)、第一服务器节点的标识以及该数据处理报文在第一服务器节点通过第一链路传输数据处理报文的发送顺序来生成报文序号。
[0049]
进一步的,在生成目标数据处理报文的报文序号之后,将目标数据处理报文以及目标数据处理报文所对应的报文序号通过第一链路发送至第二服务器节点,以使第二服务器节点处理目标数据处理报文。
[0050]
第二服务器节点在收到目标数据处理报文以及目标数据处理报文对应的报文序号之后,将目标数据处理报文的报文序号写入至报文状态表中,同时将第二服务器节点处理该目标数据处理报文的报文处理状态写入至该报文状态表中,并将目标数据处理报文的报文处理状态与目标数据处理报文的报文序号相互关联,即第二服务器节点将目标数据处理报文的报文处理状态、目标数据处理报文的报文序号以及目标数据处理报文的报文处理状态与目标数据处理报文的报文序号之间的关联关系记录在报文状态表中。
[0051]
作为一个实施例,第二服务器节点每对数据处理报文进行一次操作,就会在上述的报文状体表中对应修改该数据处理报文的报文处理状态。其中,报文处理状态至少包括表征第二服务器节点未接收到目标数据处理报文的未接收状态、表征第二服务器节点已接收目标数据处理报文但未完成响应的已接收状态,以及表征第二服务器节点已完成响应的已响应状态。
[0052]
另外,第二服务器节点在接收到第一服务器节点通过第二链路发送的状态查询指令之后,从状态查询指令中解析得到第一服务器节点所要查询的目标数据处理报文的报文序号,然后根据报文序号从报文状态表中查询与该报文序号对应的报文处理状态,并将该报文处理状态反馈给第一服务器节点,以使第一服务器节点根据报文处理状态来确定第一链路是否存在故障。
[0053]
为减少报文状态表所记录的数据处理报文的报文序号以及报文处理状态的数量,降低报文状态表所占用的第二服务器节点的内存,第二服务器节点还在报文状态表中记录序号连续的已完成响应的数据处理报文的报文序号中的最后一个报文序号以及不连续的报文序号,并删除序号连续的已完成响应的数据处理报文的报文序号中除最后一个报文序号之外的其他报文序号。
[0054]
例如,报文状态表中记录报文序号为1、2、3、4的数据处理报文为已响应状态,则第二服务器节点删除报文序号为1、2、3、4的数据处理报文的相关记录,而仅记录报文序号为4
的数据处理报文的相关信息,后续第二服务器节点在查询报文状态表时即可获知报文序号为4以及报文序号小于4的数据处理报文均已响应。
[0055]
又例如,报文状态表中记录报文序号为1、2、3、4、6、7的数据处理报文为已响应状态,则第二服务器节点仅记录报文序号为4、6、7的数据处理报文的相关信息,后续第二服务器节点在查询报文状态表时即可获知报文序号为4以及报文序号小于4的数据处理报文均已响应,报文序号为5的数据处理报文还未响应,第二服务器节点可根据报文状态表来确定报文序号为5的数据处理报文的报文处理状态。
[0056]
又例如,报文状态表中记录报文序号为1、2、3、5、6、7的数据处理报文为已响应状态,未记录报文序号为4的数据处理报文的报文处理状态,则第二服务器节点仅记录报文序号为3、5、6、7的数据处理报文的相关信息,后续第二服务器节点在查询报文状态表时即可获知报文序号为3以及报文序号小于3的数据处理报文均已响应。
[0057]
又例如,报文状态表中记录报文序号为1、2、3、5、7的数据处理报文为已响应状态,未记录报文序号为4和6的数据处理报文的报文处理状态,则第二服务器节点仅记录报文序号为3、5、7的数据处理报文的相关信息。后续,在报文序号为4的数据处理报文响应之后,报文状态表中仅记录,报文序号为5、7的数据处理报文的相关信息。
[0058]
需要说明的是,由于第二服务器节点仅根据第一服务器节点所发送的状态查询指令在报文状态表中查询对应的报文处理状态即可,该过程不涉及具体计算过程,第二服务器节点的处理速度比较快,因此,第二服务器节点能够及时查询并反馈数据处理报文的报文处理状态,提高链路故障判断的及时性。
[0059]
步骤303,通过第二链路接收第二服务器节点针对状态查询指令所返回的报文处理状态,并根据报文处理状态确定第一链路是否存在故障。
[0060]
在本实施例中,第一服务器节点可结合报文处理状态以及是否接收到第二服务器节点反馈的数据处理响应报文以及数据处理响应报文的接收时间等来确定第一链路是否存在故障。根据报文处理状态确定第一链路是否存在故障的判断方式在下文中进行详细说明,在此暂不赘述。
[0061]
步骤304,若根据报文处理状态确定第一链路存在故障,则将第一服务器节点与第二服务器节点之间的通信链路由第一链路切换为第二链路。
[0062]
在本实施例中,第二链路可以是第一服务器节点与第二服务器节点之间处于空闲状态、能够正常传输数据的链路,例如,两个服务器节点间不传输任何数据的链路;又例如,两个服务器节点间传输其他数据,但当前处于空闲状态的链路。第二链路还可以是传输状态查询指令以及报文处理状态的链路。
[0063]
作为一个实施例,在确定两个服务器节点间的第一链路存在故障后,第一服务器节点使用能够正常通信的第二链路与第二服务器节点进行数据通信,从而实现了在检测到服务器节点间的链路存在故障时故障链路与正常链路的及时切换,保证了服务器节点间的正常通信,避免了服务器节点间通信业务的卡顿。
[0064]
至此,完成图3所示的流程。
[0065]
通过图3所示流程实现了及时准确地确定服务器节点间故障链路,以及故障链路的及时切换,保证了服务器节点间通信业务的连续性。
[0066]
以下对如何根据报文处理状态来检测第一链路是否存在故障进行说明。
[0067]
作为一个实施例,若在第一服务器节点接收到报文处理状态之前,第一服务器节点已接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,则确定是第二服务器节点的计算性能下降导致第二服务器节点未能在第一保活时长内返回数据处理响应报文,第一链路未发生故障。
[0068]
作为一个实施例,若在第一服务器节点接收到报文处理状态之后,第一服务器节点未接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,并且,报文处理状态为已接收状态,则确定第一链路未发生故障,第一服务器节点未在第一保活时长内接收到数据处理响应报文并不是网络问题导致的,可能是由于第二服务器节点的处理性能下降所导致的。
[0069]
作为一个实施例,若在第一服务器节点接收到报文处理状态之后,第一服务器节点未接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,并且,报文处理状态为已响应状态,则检测在数据处理响应报文的接收时间之后的第一保活时长内是否接收到数据处理响应报文;若在数据处理响应报文的接收时间之后的第一保活时长内接收到数据处理响应报文,则确定第一链路未发生故障;否则,确定第一链路发生了故障。
[0070]
例如,在检测到第二服务器节点已响应目标数据处理报文,但第一服务器节点未接收到数据处理响应报文时,第一服务器节点再等待一次保活时长。如果在等待的保活时长内,第一服务器节点接收到了第二服务器节点返回的数据处理响应报文,则确定第一链路并未发生故障,第一服务器节点未在第一保活时长内接收到数据处理响应报文并不是网络问题导致的,可能是由于第二服务器节点的处理性能下降所导致的。
[0071]
如果在等待的保活时长之后,第一服务器节点仍未接收到第二服务器节点返回的数据处理响应报文,则确定第一链路发生了故障。
[0072]
需要说明的是,在确定第二服务器节点已响应目标数据处理报文,但第一服务器节点未接收到数据处理响应报文时,检测在数据处理响应报文的接收时间之后的第一保活时长内是否接收到数据处理响应报文,可以避免由于第二服务器节点处理目标数据处理报文的时间较长未及时反馈数据处理响应报文,导致误判第一链路存在故障的问题,提高了通信链路故障判断的准确性。
[0073]
作为一个实施例,若在第一服务器节点接收到报文处理状态之后,第一服务器节点未接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,并且,报文处理状态为未接收状态,则确定第一链路发生了故障。即若第二服务器节点未接收到目标数据处理报文,则一定是第一链路发生了故障。
[0074]
需要说明的是,在确定第一链路发生故障后,第一服务器节点将其标记为故障链路,并在后续向第二服务器节点下发报文时,不再通过该条链路下发,而是通过其他正常的链路向第二服务器节点下发报文。
[0075]
更进一步的,在确定第一链路存在故障之后,例如,在确定第一链路存在故障后的一段时长之后,第一服务器节点在第一链路上继续启动网路探测,以检测第一链路是否恢复正常。
[0076]
具体的,若检测到第一链路连接第一服务器节点与第二服务器节点,则第一服务器节点每隔预设的链路探测时长通过第一链路向第二服务器节点发送探测报文;若在预设的保活时长内,第一服务器节点接收到第二服务器节点通过第一链路所反馈的针对探测报
文的探测响应报文的持续时长超过预设的持续时长,则第一服务器节点确定第一链路处于正常状态。
[0077]
在本实施例中,在确定第一链路存在故障之后,由于第一服务器节点与第二服务器节点可通过处于正常状态的第二链路进行数据通信,而检测两个服务器节点间已发生故障的链路是否恢复正常的重要级较低,因此,在本实施例中,链路探测时长、预设的保活时长通常设置的时长较长,链路探测时长、预设的保活时长可以为相同的时长(例如,均设置为5秒),也可以为不同的时长。
[0078]
另外,在探测到第一链路处于正常状态之后,第一服务器节点再对第一链路的状态进行持续测试,以保证第一链路的稳定性。
[0079]
至此,完成了对本技术实施例所提供方法的描述。
[0080]
与前述方法的实施例相对应,本说明书还提供了装置及其所应用的电子设备的实施例。
[0081]
如图4所示,图4是本技术实施例示出的一种服务器节点间的链路切换装置的框图,上述服务器节点间的链路切换装置应用于分布式全闪存存储系统中的第一服务器节点,第一服务器节点通过通信链路与第二服务器节点通信,通信链路至少包括第一链路和第二链路,该装置包括:保活时长确定模块、状态查询模块、故障确定模块以及链路切换模块。
[0082]
保活时长确定模块,用于在当前时刻通过第一链路向第二服务器节点发送目标数据处理报文,根据目标数据处理报文的大小以及平均报文响应时长确定目标数据处理报文所对应的第一保活时长,其中,平均报文响应时长为在第一服务器节点发送目标数据处理报文的发送时间之前的预设时长内,第一服务器节点所发送的数据处理报文的报文响应时长的平均值;
[0083]
状态查询模块,用于若在第一保活时长内,第一服务器节点未接收到第二服务器节点通过第一链路所反馈的针对目标数据处理报文的数据处理响应报文,则通过第二链路向第二服务器节点发送用于查询第二服务器节点处理目标数据处理报文的处理状态的状态查询指令;
[0084]
故障确定模块,用于通过第二链路接收第二服务器节点针对状态查询指令所返回的报文处理状态,并根据报文处理状态确定第一链路是否存在故障,其中,报文处理状态至少包括表征第二服务器节点未接收到目标数据处理报文的未接收状态、表征第二服务器节点已接收目标数据处理报文但未完成响应的已接收状态,以及表征第二服务器节点已完成响应的已响应状态;
[0085]
链路切换模块,用于若根据报文处理状态确定第一链路存在故障,则将第一服务器节点与第二服务器节点之间的通信链路由第一链路切换为第二链路。
[0086]
可选的,保活时长确定模块具体用于统计第一服务器节点在发送时间之前的预设时长内通过第一链路所接收到的第二服务器节点所反馈的数据处理响应报文的平均报文响应时长,以及第一服务器节点在发送时间之前的预设时长内通过第一链路所发送的数据处理报文的平均报文大小;计算目标数据处理报文的大小与平均报文大小的比值,并计算平均报文响应时长与比值的乘积,得到第一保活时长。
[0087]
可选的,链路切换装置还包括:数据统计模块,用于根据第一服务器节点在发送时
间之前的预设时长内通过第一链路所发送的数据处理报文的报文发送时间,以及第一服务器节点通过第一链路所接收到的第二服务器节点所反馈的数据处理响应报文的报文接收时间,确定第一服务器节点在预设时长内通过第一链路向第二服务器节点发送的数据处理报文的报文响应时长;计算在发送时间之前的预设时长内,第一服务器节点通过第一链路向第二服务器节点发送的数据处理报文的报文响应时长的平均值,得到平均报文响应时长;统计第一服务器节点在发送时间之前的预设时长内通过第一链路向第二服务器节点所发送的数据处理报文的大小,并计算发送时间之前的预设时长内数据处理报文的大小平均值,得到平均报文大小。
[0088]
可选的,保活时长确定模块具体用于根据目标数据处理报文在第一服务器节点通过第一链路向第二服务器节点发送数据处理报文的发送顺序中的位置,确定目标数据处理报文的报文序号;将目标数据处理报文以及目标数据处理报文所对应的报文序号通过第一链路发送至第二服务器节点,以使第二服务器节点处理目标数据处理报文,并将目标数据处理报文的报文处理状态、目标数据处理报文的报文序号以及目标数据处理报文的报文处理状态与目标数据处理报文的报文序号之间的关联关系记录在报文状态表中。
[0089]
可选的,第二服务器节点还用于在报文状态表中记录序号连续的已完成响应的数据处理报文的报文序号中的最后一个报文序号以及不连续的报文序号,并删除序号连续的已完成响应的数据处理报文的报文序号中除最后一个报文序号之外的其他报文序号。
[0090]
可选的,故障确定模块具体用于若在第一服务器节点接收到报文处理状态之前,第一服务器节点已接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,则确定第一链路未发生故障。
[0091]
可选的,故障确定模块具体用于若在第一服务器节点接收到报文处理状态之后,第一服务器节点未接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,并且,报文处理状态为已接收状态,则确定第一链路未发生故障。
[0092]
可选的,故障确定模块具体用于若在第一服务器节点接收到报文处理状态之后,第一服务器节点未接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,并且,报文处理状态为已响应状态,则检测在数据处理响应报文的接收时间之后的第一保活时长内是否接收到数据处理响应报文;若在数据处理响应报文的接收时间之后的第一保活时长内接收到数据处理响应报文,则确定第一链路未发生故障;否则,确定第一链路发生了故障。
[0093]
可选的,故障确定模块具体用于若在第一服务器节点接收到报文处理状态之后,第一服务器节点未接收到第二服务器节点针对目标数据处理报文所返回的数据处理响应报文,并且,报文处理状态为未接收状态,则确定第一链路发生了故障。
[0094]
可选的,链路切换装置还包括:网络探测模块,用于在将第一服务器节点与第二服务器节点之间的通信链路由第一链路切换为第二链路之后,在检测到第一链路连接第一服务器节点与第二服务器节点时,每隔预设的链路探测时长通过第一链路向第二服务器节点发送探测报文;若在预设的保活时长内,第一服务器节点接收到第二服务器节点通过第一链路所反馈的针对探测报文的探测响应报文的持续时长超过预设的持续时长,则确定第一链路处于正常状态。
[0095]
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的
实现过程,在此不再赘述。
[0096]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0097]
对应地,本技术实施例还提供了图5所示电子设备的硬件结构图,具体如图5所示,该电子设备可以为上述实施方法的设备。如图5所示,该硬件结构包括:处理器和存储器。
[0098]
其中,所述存储器,用于存储机器可执行指令;
[0099]
所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如上所示的所对应的服务器节点间的链路切换方法实施例。
[0100]
作为一个实施例,存储器可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,存储器可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,存储器可以是ram(radom access memory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0101]
至此,完成图5所示电子设备的描述。
[0102]
基于同样的发明构思,本实施例还提供了计算机可读存储介质。该计算机可读存储介质,用于存储计算机程序;该计算机程序被处理器执行时实现上述的方法实施例。
[0103]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0104]
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
[0105]
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
[0106]
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

技术特征:
1.一种服务器节点间的链路切换方法,其特征在于,应用于分布式全闪存存储系统中的第一服务器节点,所述第一服务器节点通过通信链路与第二服务器节点通信,所述通信链路至少包括第一链路和第二链路,所述方法包括:在当前时刻通过所述第一链路向所述第二服务器节点发送目标数据处理报文,根据所述目标数据处理报文的大小以及平均报文响应时长确定所述目标数据处理报文所对应的第一保活时长,其中,所述平均报文响应时长为在所述第一服务器节点发送所述目标数据处理报文的发送时间之前的预设时长内,所述第一服务器节点所发送的数据处理报文的报文响应时长的平均值;若在所述第一保活时长内,所述第一服务器节点未接收到所述第二服务器节点通过所述第一链路所反馈的针对所述目标数据处理报文的数据处理响应报文,则通过所述第二链路向所述第二服务器节点发送用于查询所述第二服务器节点处理所述目标数据处理报文的处理状态的状态查询指令;通过所述第二链路接收所述第二服务器节点针对所述状态查询指令所返回的报文处理状态,并根据所述报文处理状态确定所述第一链路是否存在故障,其中,所述报文处理状态至少包括表征所述第二服务器节点未接收到所述目标数据处理报文的未接收状态、表征所述第二服务器节点已接收所述目标数据处理报文但未完成响应的已接收状态,以及表征所述第二服务器节点已完成响应的已响应状态;若根据所述报文处理状态确定所述第一链路存在故障,则将所述第一服务器节点与所述第二服务器节点之间的通信链路由所述第一链路切换为所述第二链路。2.根据权利要求1所述的方法,其特征在于,根据所述目标数据处理报文的大小以及平均报文响应时长确定第一保活时长确定第一保活时长,包括:统计所述第一服务器节点在所述发送时间之前的预设时长内通过所述第一链路所接收到的所述第二服务器节点所反馈的数据处理响应报文的平均报文响应时长,以及所述第一服务器节点在所述发送时间之前的预设时长内通过所述第一链路所发送的数据处理报文的平均报文大小;计算所述目标数据处理报文的大小与所述平均报文大小的比值,并计算所述平均报文响应时长与所述比值的乘积,得到所述第一保活时长。3.根据权利要求2所述的方法,其特征在于,在根据所述目标数据处理报文的大小以及平均报文响应时长确定第一保活时长确定第一保活时长之前,所述方法还包括:根据所述第一服务器节点在所述发送时间之前的预设时长内通过所述第一链路所发送的数据处理报文的报文发送时间,以及所述第一服务器节点通过所述第一链路所接收到的所述第二服务器节点所反馈的数据处理响应报文的报文接收时间,确定所述第一服务器节点在所述预设时长内通过所述第一链路向所述第二服务器节点发送的数据处理报文的报文响应时长;计算在所述发送时间之前的预设时长内,所述第一服务器节点通过所述第一链路向所述第二服务器节点发送的数据处理报文的报文响应时长的平均值,得到所述平均报文响应时长;统计所述第一服务器节点在所述发送时间之前的预设时长内通过所述第一链路向所述第二服务器节点所发送的数据处理报文的大小,并计算所述发送时间之前的预设时长内
所述数据处理报文的大小平均值,得到所述平均报文大小。4.根据权利要求1所述的方法,其特征在于,通过所述第一链路向所述第二服务器节点发送目标数据处理报文,包括:根据所述目标数据处理报文在所述第一服务器节点通过所述第一链路向所述第二服务器节点发送数据处理报文的发送顺序中的位置,确定所述目标数据处理报文的报文序号;将所述目标数据处理报文以及所述目标数据处理报文所对应的报文序号通过所述第一链路发送至所述第二服务器节点,以使所述第二服务器节点处理所述目标数据处理报文,并将所述目标数据处理报文的报文处理状态、所述目标数据处理报文的报文序号以及所述目标数据处理报文的报文处理状态与所述目标数据处理报文的报文序号之间的关联关系记录在报文状态表中。5.根据权利要求4所述的方法,其特征在于,所述第二服务器节点还用于在所述报文状态表中记录序号连续的已完成响应的数据处理报文的报文序号中的最后一个报文序号以及不连续的报文序号,并删除所述序号连续的已完成响应的数据处理报文的报文序号中除所述最后一个报文序号之外的其他报文序号。6.根据权利要求1所述的方法,其特征在于,根据所述报文处理状态确定所述第一链路是否存在故障,包括:若在所述第一服务器节点接收到所述报文处理状态之前,所述第一服务器节点已接收到所述第二服务器节点针对所述目标数据处理报文所返回的数据处理响应报文,则确定所述第一链路未发生故障。7.根据权利要求1所述的方法,其特征在于,根据所述报文处理状态确定所述第一链路是否存在故障,包括:若在所述第一服务器节点接收到所述报文处理状态之后,所述第一服务器节点未接收到所述第二服务器节点针对所述目标数据处理报文所返回的数据处理响应报文,并且,所述报文处理状态为所述已接收状态,则确定所述第一链路未发生故障。8.根据权利要求1所述的方法,其特征在于,根据所述报文处理状态确定所述第一链路是否存在故障,包括:若在所述第一服务器节点接收到所述报文处理状态之后,所述第一服务器节点未接收到所述第二服务器节点针对所述目标数据处理报文所返回的数据处理响应报文,并且,所述报文处理状态为所述已响应状态,则检测在所述数据处理响应报文的接收时间之后的第一保活时长内是否接收到所述数据处理响应报文;若在所述数据处理响应报文的接收时间之后的第一保活时长内接收到所述数据处理响应报文,则确定所述第一链路未发生故障;否则,确定所述第一链路发生了故障。9.根据权利要求1所述的方法,其特征在于,根据所述报文处理状态确定所述第一链路是否存在故障,包括:若在所述第一服务器节点接收到所述报文处理状态之后,所述第一服务器节点未接收到所述第二服务器节点针对所述目标数据处理报文所返回的数据处理响应报文,并且,所述报文处理状态为所述未接收状态,则确定所述第一链路发生了故障。10.根据权利要求1所述的方法,其特征在于,在将所述第一服务器节点与所述第二服
务器节点之间的通信链路由所述第一链路切换为所述第二链路之后,所述方法还包括:在检测到所述第一链路连接所述第一服务器节点与所述第二服务器节点时,每隔预设的链路探测时长通过所述第一链路向所述第二服务器节点发送所述探测报文;若在预设的保活时长内,所述第一服务器节点接收到所述第二服务器节点通过所述第一链路所反馈的针对所述探测报文的探测响应报文的持续时长超过预设的持续时长,则确定所述第一链路处于正常状态。11.一种服务器节点间的链路切换装置,其特征在于,应用于分布式全闪存存储系统中的第一服务器节点,所述第一服务器节点通过通信链路与第二服务器节点通信,所述通信链路至少包括第一链路和第二链路,所述装置包括:保活时长确定模块,用于在当前时刻通过所述第一链路向所述第二服务器节点发送目标数据处理报文,根据所述目标数据处理报文的大小以及平均报文响应时长确定所述目标数据处理报文所对应的第一保活时长,其中,所述平均报文响应时长为在所述第一服务器节点发送所述目标数据处理报文的发送时间之前的预设时长内,所述第一服务器节点所发送的数据处理报文的报文响应时长的平均值;状态查询模块,用于若在所述第一保活时长内,所述第一服务器节点未接收到所述第二服务器节点通过所述第一链路所反馈的针对所述目标数据处理报文的数据处理响应报文,则通过所述第二链路向所述第二服务器节点发送用于查询所述第二服务器节点处理所述目标数据处理报文的处理状态的状态查询指令;故障确定模块,用于通过所述第二链路接收所述第二服务器节点针对所述状态查询指令所返回的报文处理状态,并根据所述报文处理状态确定所述第一链路是否存在故障,其中,所述报文处理状态至少包括表征所述第二服务器节点未接收到所述目标数据处理报文的未接收状态、表征所述第二服务器节点已接收所述目标数据处理报文但未完成响应的已接收状态,以及表征所述第二服务器节点已完成响应的已响应状态;链路切换模块,用于若根据所述报文处理状态确定所述第一链路存在故障,则将所述第一服务器节点与所述第二服务器节点之间的通信链路由所述第一链路切换为所述第二链路。12.一种电子设备,其特征在于,电子设备包括:处理器和存储器;其中,所述存储器,用于存储机器可执行指令;所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如权利要求1至10任一项所述的方法。

技术总结
本申请提供一种服务器节点间的链路切换方法、装置及电子设备。在本申请中,根据当前的数据处理报文的大小以及最近一段时长内的平均报文响应时长所确定的保活时长,能够与网络变化相适应,采用与网络变化相适应的保活时长,能够更加准确地确定服务器节点间通信链路是否存在故障,进而保证了服务器节点间通信业务的连续性。本申请还结合报文处理状态进一步检测服务器节点间的链路是否存在故障,该方式能够提高服务器节点间通信链路故障的判断准确度,进一步保证了服务器节点间通信业务的连续性。续性。续性。


技术研发人员:陈武雄
受保护的技术使用者:杭州宏杉科技股份有限公司
技术研发日:2023.06.05
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐