一种容灾切换方法及装置
技术领域
本说明书实施例涉及服务容灾技术领域,尤其涉及一种容灾切换方法及装置。
背景技术
微服务架构体系,其作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。在微服务架构体系中,各个服务之间往往是以调用的形式联系在一起,来提供复杂的服务支持。不可避免的,服务和服务之间的调用往往并不是完全可靠的,例如A服务调用B服务,但是由于某种原因导致A-B链路出现故障,使得A服务不能调用B服务。
当前为了应对上述问题,额外建立了与B服务功能相同的备用服务B1、B2……,当A-B链路出现故障,A服务不能调用B服务时,A服务直接调用与B服务功能相同的备用服务B1、B2……,以实现服务容灾,保证整个服务系统的可用性。
为了方便理解,可以将发出服务调用请求的一方(A服务)称为请求端,将响应服务调用请求的一方称为响应端,其中响应端可以分为主响应端(B服务)、备响应端(备用服务B1、B2……)。
现有的这种容灾切换方式,在请求端与主响应端之间的链路出现故障的情况下,直接切换到备用链路,请求端直接调用备响应端。但是请求端与主响应端之间的链路出现故障,可能是由于网络波动或者网络闪断,或者由于整个服务系统的不稳定性所导致的,如果直接切换至备用链路,切换成本较高,即在切换的过程中需要消耗一定时间,在一定时间内整个服务系统提供的服务不可用。
发明内容
针对上述技术问题,本说明书实施例提供一种容灾切换方法及装置,技术方案如下:
一种容灾切换方法,应用于请求端,所述请求端分别与主响应端和备响应端连接,其中所述请求端与主响应端之间的链路包括多个通道,该方法包括:配置状态迁移进程、故障切换进程;
状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移;
故障切换进程在监听到所述预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道;
若存在,故障切换进程将所述当前通道切换至所述可用通道,以使请求端可以调用主响应端;
若不存在,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
一种容灾恢复方法,应用于请求端,所述请求端分别与主响应端和备响应端连接,其中所述请求端与主响应端之间的链路包括多个通道,该方法包括:配置状态迁移进程、故障切换进程;
状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁;
故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道。
一种容灾切换装置,应用于请求端,所述请求端分别与主响应端和备响应端连接,其中所述请求端与主响应端之间的链路包括多个通道,该装置包括:
配置模块:状态迁移进程、故障切换进程;
状态迁移模块,用于状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移;
确定模块,用于故障切换进程在监听到所述预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道;
第一切换模块,用于若存在,故障切换进程将所述当前通道切换至所述可用通道,以使请求端可以调用主响应端;
第二切换模块,用于若不存在,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
一种容灾恢复装置,应用于请求端,所述请求端分别与主响应端和备响应端连接,其中所述请求端与主响应端之间的链路包括多个通道,该装置包括:
配置模块,用于状态迁移进程、故障切换进程;
状态回迁模块,用于状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁;
通道切换模块,用于故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道。
本说明书实施例所提供的技术方案,在请求端与主响应端之间的链路中当前通道出现故障之后,状态迁移层按照预设的迁移策略推动预设的状态机进行相应的状态迁移,故障切换进程在监听到预设的状态机的状态发生迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道,若存在,故障切换进程将当前通道切换至可用通道,以使请求端可以继续调用主响应端,否则故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。排除由于网络波动或者网络闪断,或者由于整个服务系统的不稳定性等因素导致的请求端与主响应端之间的链路出现故障,减少主备之间的切换次数,一定程度上削减了切换成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例的请求端与主响应端之间的连接示意图;
图2是本说明书实施例的容灾切换方法的流程示意图;
图3是本说明书实施例的容灾恢复方法的流程示意图;
图4是本说明书实施例的容灾切换装置的结构示意图;
图5是本说明书实施例的容灾恢复装置的结构示意图;
图6是用于配置本说明书实施例装置的一种设备的结构示意图。
具体实施方式
微服务结构体系,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。在微服务架构体系中,各个服务之间往往是以调用的形式联系在一起,来提供复杂的服务支持。不可避免的,在传统微服务架构体系下,服务和服务之间的调用往往并不是可靠的,如背景技术中所描述的。
针对背景技术中现有技术的问题,本说明书实施例提供一种技术方案,在请求端与主响应端之间的链路中当前通道出现故障之后,状态迁移层按照预设的迁移策略推动预设的状态机进行相应的状态迁移,故障切换进程在监听到预设的状态机的状态发生迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道,若存在,故障切换进程将当前通道切换至可用通道,以使请求端可以继续调用主响应端,否则故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。排除由于网络波动或者网络闪断,或者由于整个服务系统的不稳定性等因素导致的请求端与主响应端之间的链路出现故障,减少主备之间的切换次数,一定程度上削减了切换成本。
具体的本说明书实施例提供的技术方案如下:
配置状态迁移进程、故障切换进程;状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移;故障切换进程在监听到所述预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道;若存在,故障切换进程将所述当前通道切换至所述可用通道,以使请求端可以调用主响应端;若不存在,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
相应的本说明书实施例还提供一种容灾恢复方法,具体的本说明书实施例提供的技术方案如下:
状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁;故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道。
其中在本说明书实施例提供的技术方案中,如背景技术中提到的A-B链路是一条链路(Link),但是在本说明书实施例中这条链路可以通过不同的通道(Channel)到达,如图1所示,例如A-B链路可使用RabbitMQ或者RocketMQ到达,RabbitMQ可以看作是通道1,RocketMQ可以看作是通道2,其中RabbitMQ、RocketMQ是一种消息队列。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
如图2所示,为本说明书实施例所提供的一种容灾切换方法的实施流程图,该方法具体可以包括以下步骤:
S201,状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移;
状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,根据预设的状态机当前的状态确定预设的迁移策略,状态迁移进程按照所确定的迁移策略推动预设的状态机进行相应的状态迁移,意味着迁移策略与状态机的当前状态有关,例如状态机的状态存在以前几种:core状态(所有数据通过主通道传递)、mix状态(有部分数据通过主通道传递,另外一部分数据通过备用通道传递)、backup状态(所有数据通过备用通道传递)、panic状态(主备通道均不可用),其中backup状态具体可以分为backup1、backup2……,对应备用通道1、备用通道2、……,若当前状态机的状态为core状态,则迁移策略可以是core-backup-panic,又或者当前状态机的状态为mix状态,则迁移策略可以是mix-core-panic或者mix-backup-panic。因此由状态机的当前状态可以确定对应的迁移策略,状态机的当前状态为未迁移之前的状态。
在确定对应的迁移策略之后,状态迁移进程按照所确定的迁移策略推动预设的状态机进行相应的状态迁移。状态迁移指的是在发生故障时,将状态机的当前状态迁移至下一状态。如上述所说的,当前状态是mix状态,下一状态是backup状态,具体的可以是backup1、backup2……中任一状态,在迁移至backup状态时,选择backup1、backup2……的策略有很多种,例如随机策略,即随机从backup1、backup2……中选择一个,迁移至该状态,又例如排序策略,本说明书实施例对此不作限定。
其中特别的,例如当前状态是backup状态,在进行状态迁移时,在内部进行状态迁移即可,例如具体的是backup1,利用排序策略选择的是backup2,在内部由backup1迁移至backup2即可。
S202,故障切换进程在监听到所述预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道;
故障切换进程可以实时监听预设的状态机的状态是否发生状态迁移,在监听到预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道,具体的步骤是:
故障切换进程在监听到预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定下一通道,可以理解的是状态机的状态对应着一个通道,其中该下一通道为除当前通道之外的任一通道,例如迁移之后的状态机的状态为backup,具体是backup1,则确定的下一通道为备用通道1。
故障切换进程将当前通道所传递的数据或者预先设置的虚拟数据发往该下一通道,对该下一通道进行测试。这里的测试即查看该下一通道所传递的数据是否可以处理成功,数据处理成功即通过测试,否则没有通过测试,这里的数据可以是调用请求,也可以是其它形式的内容,本说明书对此不作限定。
若该下一通道通过测试,故障切换进程则确定存在可用通道,可用通道为该下一通道。
若该下一通道未通过测试,故障切换进程则依次将当前通道所传递的数据或预先设置的虚拟数据发往剩余通道,对剩余通道依次进行测试。其中若某一个通道通过测试,则停止测试,否则继续测试,直到确定存在可用通道或者确定剩余通道都不可用。若所有剩余通道均未通过测试,故障切换进程则确定不存在可用通道,否则确定可用通道,可用通道为剩余通道中通过测试的通道,与此同时,预设的状态机也会迁移至对应的状态。
S203,若存在,故障切换进程将所述当前通道切换至所述可用通道,以使请求端可以调用主响应端;
针对S202所确定的结果,若存在可用通道,故障切换进程将当前通道切换至可用通道,以使请求端可以调用主响应端。例如,请求端与主响应端之间链路中当前通道为主通道,可用通道为备用通道1,故障切换进程将主通道切换至备用通道1。
另外,故障切换进程在将当前通道切换至可用通道之前,判断可用通道是否达到限流,若没有达到限流,故障切换进程将当前通道切换至可用通道,否则故障切换进程重新确定可用通道。其中若重新确定存在多个可用通道,选择最空闲的通道,若重新确定不存在其它的可用通道,则对原先确定的可用通道执行限流策略。
S204,若不存在,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
针对S203中所确定的结果,若不存在可用通道,则意味着请求端与主响应端之间的链路中所有通道均不可用,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
其中在上述方案基础之上,在容灾切换之前,还可以包括故障检测:配置故障感知进程;
在预设的时间段内,故障感知进程记录经过请求端与主响应端之间的链路中当前通道所传递的数据。这里预设的时间段可以是连续的几个周期,例如可以是三个连续的1000ms,在每个周期(1000ms)之内,故障感知进程记录经过请求端与主响应端之间的链路中当前通道所传递的数据,连续记录三个周期。
故障感知进程在所记录的数据中统计处理失败的数据。例如,如上述所说的,在每个周期内故障感知进程在所记录的数据中统计处理失败的数据,连续统计三个周期。
故障感知进程计算所统计的处理失败的数据在所记录的数据中的占比。例如,如上述所说的,在每个周期内故障感知进程计算所统计的处理失败的数据在所记录的数据中的占比,例如占比为30%,连续计算三个周期。
故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值。例如,如上述所说的,在每个周期内故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值,例如预设的阈值是30%。其中故障感知进程在判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值之前,故障感知进程判断所记录的数据是否满足预设的要求,即故障感知进程判断所记录的数据的数量是否达到一定的数量,若达到,故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值。
若是,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态迁移的通知。例如,如上述所说的,在每个周期内所统计的处理失败的数据在所记录的数据中的占比均超过预设的阈值,则感知到当前通道发生故障,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态迁移的通知,状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移。
进一步的,上述故障检测步骤可以细分为如下步骤:
在预设的时间段内,故障感知进程记录经过请求端与主响应端之间的链路中当前通道所传递的数据,与上述类似不再赘述。
故障感知进程在所记录的数据中对处理失败的数据进行分类,统计每类中包含的处理失败的数据。例如,在每个周期内故障感知进程在所记录的数据中对处理失败的数据进行分类,统计每类中包含的处理失败的数据,连续统计三个周期,其中可以将处理失败的数据分为4类,分别是系统故障(对端系统异常、网络闪断、链接超时、链接失败等)、业务故障(对端或本地参数校验失败,例如某某参数不存在)、超时故障(对端系统响应超时)、自定义故障(由用户自定义),可以在每个周期内,统计每类故障包含的处理失败的数据。
故障感知进程计算所分的类别中其中一类或几类包含的处理失败的数据在所记录的数据中的占比。例如,在每个周期内故障感知进程计算所分的类别中其中一类或几类包含的处理失败的数据在所记录的数据中的占比,连续计算三个周期。
故障感知进程判断所计算的其中一类或几类包含的处理失败的数据在所记录的数据中的占比,是否超过与所分的类别对应的预设阈值。例如,在每个周期内故障感知进程判断所计算的其中一类或几类包含的处理失败的数据在所记录的数据中的占比,是否超过与所分的类别对应的预设阈值,连续判断三个周期。其中在每个周期内,故障感知进程可以判断其中一类(系统故障)包含的处理失败的数据在所记录的数据中的占比,是否超过该类别对应的预设阈值,也可以判断其中几类包含的处理失败的数据在所记录的数据中的占比,是否超过这几类各自对应的预设阈值。特殊的,每类对应的预设阈值可以一样,也可以不同,即系统故障对应的预设阈值可以是30%,业务故障对应的预设阈值可以是30%,也可以是其他值。
若是,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态迁移的通知,状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移,与上述类似这里不再详细赘述。
通过上述对本说明书所提供的技术方案的描述,在请求端与主响应端之间的链路中当前通道出现故障之后,状态迁移层按照预设的迁移策略推动预设的状态机进行相应的状态迁移,故障切换进程在监听到预设的状态机的状态发生迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道,若存在,故障切换进程将当前通道切换至可用通道,以使请求端可以继续调用主响应端,否则故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。排除由于网络波动或者网络闪断,或者由于整个服务系统的不稳定性等因素导致的请求端与主响应端之间的链路出现故障,减少主备之间的切换次数,一定程度上削减了切换成本。
与上述容灾切换方法实施例相对应,本说明书实施例还提供一种容灾恢复方法,如图3所示,可以包括以下步骤:
S301,状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁;
状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁,其中可以根据预设的状态机当前的状态确定预设的迁移策略,状态迁移进程按照所确定的迁移策略推动预设的状态机进行相应的状态回迁,意味着迁移策略与状态机的当前状态有关。其中状态机的状态与上述S201中的类似,这里不再详细赘述,在S201中,将状态机的core状态迁移至backup状态,在本步骤中,将backup状态回迁至core状态。
S302,故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道。
针对S301中的结果,故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,进行容灾恢复,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道,故障通道已恢复至正常状态。
在上述容灾恢复方法的基础之上,还可以进一步包括故障检测步骤,具体的可以包括以下步骤:配置故障感知进程;
故障感知进程将当前通道所传递的数据或预先设置的虚拟数据发往所述故障通道;
在预设的时间段内,故障感知进程记录经过所述故障通道所传递的数据;
故障感知进程在所记录的数据中统计处理失败的数据;
故障感知进程计算所统计的处理失败的数据在所记录的数据中的占比;
故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值;
若否,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态回迁的通知;如果所统计的处理失败的数据在所记录的数据中的占比没有超过预设的阈值(10%),意味着故障通道已恢复至正常状态,否则意味着故障通道依然处于故障状态。
状态迁移进程在监听到故障感知进程发送的状态回迁通知之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁。
进一步的,上述故障检测步骤可以细分为如下步骤:
故障感知进程将当前通道所传递的数据或预先设置的虚拟数据发往所述故障通道;
在预设的时间段内,故障感知进程记录经过所述故障通道所传递的数据;
故障感知进程在所记录的数据中对处理失败的数据进行分类,统计每类中包含的处理失败的数据;
故障感知进程计算所分的类别中其中一类或几类包含的处理失败的数据在所记录的数据中的占比;
故障感知进程判断所计算的其中一类或几类包含的处理失败的数据在所记录的数据中的占比,是否超过与所分的类别对应的预设阈值;
若否,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态回迁的通知;
状态迁移进程在监听到故障感知进程发送的状态回迁通知之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁。
其中在容灾恢复方法中,故障检测步骤与上述容灾切换方法中故障检测步骤类似,细节部分这里不再详细赘述。特别的,在容灾恢复方法中,进行故障检测时,可以选择不必判断所记录的数据是否满足预设的要求。
通过上述对容灾恢复方法的描述,可以自动感知故障通道是否恢复至正常,在故障通道恢复至正常之后,可以自动进行容灾恢复。
相对于上述方法实施例,本说明书实施例还提供了一种容灾切换装置,如图4所示,可以包括:配置模块410、状态迁移模块420、确定模块430、第一切换模块440、第二切换模块450。
配置模块410:状态迁移进程、故障切换进程;
状态迁移模块420,用于状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移;
确定模块430,用于故障切换进程在监听到所述预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道;
第一切换模块440,用于若存在,故障切换进程将所述当前通道切换至所述可用通道,以使请求端可以调用主响应端;
第二切换模块450,用于若不存在,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
根据本说明书提供的一种具体实施方式,所述配置模块410还用于配置故障感知进程;
所述装置还包括:故障检测模块460;
所述故障检测模块包括:
数据记录单元461,用于在预设的时间段内,故障感知进程记录经过请求端与主响应端之间的链路中当前通道所传递的数据;
数据统计单元462,用于故障感知进程在所记录的数据中统计处理失败的数据;
占比计算单元463,用于故障感知进程计算所统计的处理失败的数据在所记录的数据中的占比;
判断单元464,用于故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值;
通知发送单元465,用于若是,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态迁移的通知;
所述状态迁移模块420具体用于:
状态迁移进程在监听到故障感知进程发送的状态迁移通知之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移。
根据本说明书提供的一种具体实施方式,所述判断单元464具体用于:
故障感知进程判断所记录的数据是否满足预设的要求;
若是,故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值。
根据本说明书提供的一种具体实施方式,所述数据统计单元462具体用于:
故障感知进程在所记录的数据中对处理失败的数据进行分类,统计每类中包含的处理失败的数据;
所述占比计算单元463具体用于:
故障感知进程计算所分的类别中其中一类或几类包含的处理失败的数据在所记录的数据中的占比;
所述判断单元464具体用于:
故障感知进程判断所计算的其中一类或几类包含的处理失败的数据在所记录的数据中的占比,是否超过与所分的类别对应的预设阈值。
根据本说明书提供的一种具体实施方式,所述状态迁移模块420具体用于:
状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,根据所述预设的状态机当前的状态确定预设的迁移策略;
状态迁移进程按照所确定的迁移策略推动预设的状态机进行相应的状态迁移。
通过上述对本说明书所提供的技术方案的描述,在请求端与主响应端之间的链路中当前通道出现故障之后,状态迁移层按照预设的迁移策略推动预设的状态机进行相应的状态迁移,故障切换进程在监听到预设的状态机的状态发生迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道,若存在,故障切换进程将当前通道切换至可用通道,以使请求端可以继续调用主响应端,否则故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。排除由于网络波动或者网络闪断,或者由于整个服务系统的不稳定性等因素导致的请求端与主响应端之间的链路出现故障,减少主备之间的切换次数,一定程度上削减了切换成本。
相对于上述容灾切换装置,本说明书实施例还提供一种容灾切换恢复装置,如图5所示,可以包括:配置模块510、状态回迁模块520、通道切换模块530。
配置模块510,用于状态迁移进程、故障切换进程;
状态回迁模块520,用于状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁;
通道切换模块530,用于故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道。
根据本说明书提供的一种具体实施方式,所述配置模块510还用于配置故障感知进程;
所述装置还包括:故障检测模块540;
所述故障检测模块包括:
数据发送单元541,用于故障感知进程将当前通道所传递的数据或预先设置的虚拟数据发往所述故障通道;
数据记录单元542,用于在预设的时间段内,故障感知进程记录经过所述故障通道所传递的数据;
数据统计单元543,用于故障感知进程在所记录的数据中统计处理失败的数据;
占比计算单元544,用于故障感知进程计算所统计的处理失败的数据在所记录的数据中的占比;
判断单元545,用于故障感知进程判断所统计的处理失败的数据在所记录的数据中的占比是否超过预设的阈值;
通知发送单元546,用于若否,故障感知进程向状态迁移进程发送推动预设的状态机进行相应的状态回迁的通知;
所述状态回迁模块520具体用于:
状态迁移进程在监听到故障感知进程发送的状态回迁通知之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁。
根据本说明书提供的一种具体实施方式,所述数据统计单元543具体用于:
故障感知进程在所记录的数据中对处理失败的数据进行分类,统计每类中包含的处理失败的数据;
所述占比计算单元544具体用于:
故障感知进程计算所分的类别中其中一类或几类包含的处理失败的数据在所记录的数据中的占比;
所述判断单元545具体用于:
故障感知进程判断所计算的其中一类或几类包含的处理失败的数据在所记录的数据中的占比,是否超过与所分的类别对应的预设阈值。
通过上述对容灾恢复方法的描述,可以自动感知故障通道是否恢复至正常,在故障通道恢复至正常之后,可以自动进行容灾恢复。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本说明书实施例还提供一种计算机设备,如图6所示,该设备可以包括:处理器610、存储器620、输入/输出接口630、通信接口640和总线650。其中处理器610、存储器620、输入/输出接口630和通信接口640通过总线650实现彼此之间在设备内部的通信连接。
处理器610可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器620可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器620可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器620中,并由处理器610来调用执行。
输入/输出接口630用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口640用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线650包括一通路,在设备的各个组件(例如处理器610、存储器620、输入/输出接口630和通信接口640)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器610、存储器620、输入/输出接口630、通信接口640以及总线650,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的容灾切换方法。该方法至少包括:
一种容灾切换方法,应用于请求端,所述请求端分别与主响应端和备响应端连接,其中所述请求端与主响应端之间的链路包括多个通道,该方法包括:配置状态迁移进程、故障切换进程;
状态迁移进程在监听到请求端与主响应端之间的链路中当前通道出现故障之后,按照预设的迁移策略推动预设的状态机进行相应的状态迁移;
故障切换进程在监听到所述预设的状态机进行相应的状态迁移之后,根据迁移之后的状态机的状态确定是否存在可用通道;
若存在,故障切换进程将所述当前通道切换至所述可用通道,以使请求端可以调用主响应端;
若不存在,故障切换进程将请求端与主响应端之间的链路切换至备用链路,以使请求端可以调用备响应端。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的容灾恢复方法。该方法至少包括:
一种容灾恢复方法,应用于请求端,所述请求端分别与主响应端和备响应端连接,其中所述请求端与主响应端之间的链路包括多个通道,该方法包括:配置状态迁移进程、故障切换进程;
状态迁移进程在监听到请求端与主响应端之间的链路中故障通道故障恢复之后,按照预设的迁移策略推动预设的状态机进行相应的状态回迁;
故障切换进程在监听到所述预设的状态机进行相应的状态回迁之后,将请求端与主响应端之间的链路中当前通道恢复至所述故障通道。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。