一种服务切换方法和装置与流程

文档序号:11693222阅读:163来源:国知局
一种服务切换方法和装置与流程

本发明涉及it(informationtechnology,信息技术)系统领域,更具体地说,涉及一种服务切换方法和装置。



背景技术:

随着信息技术应用的快速推广,越来越多的行业都建立起it系统。在电信、金融、能源等信息化程度高的行业,it系统已经形成相当庞大的规模体系,这些行业的运营管理已形成对it系统的高度依赖。企业级的it系统一般由前台终端和后台数据中心构成。数据中心it基础设施技术繁杂、标准不一的“异构环境”对系统维护提出了极高的技术要求。it行业第三方服务商由此应运而生。it行业第三方服务是指由非原厂商提供的,针对多品牌产品的it基础设施服务。

现有业务在实际使用中,大都会依赖一个或多个第三方服务,并且主要通过http(hypertexttransferprotocol,超文本传输协议)请求完成数据交互。但是,在请求过程中会经常出现请求失败的情况。请求失败的原因主要体现在两方面。一方面是由于网络问题(延迟、阻塞、断开等)消息不可达导致请求失败;另一方面是自身服务不可用(代码bug、服务器宕机等不可控因素)导致请求失败。第三方服务的不可靠,直接影响整个业务的稳定性。

依赖的第三方服务不可用会导致整个业务受到影响。由于依赖的第三方服务大部分是不同团队维护,这样使得服务报警滞后进而导致服务恢复上的耗时过长。耗时越长对业务影响越大,特别是对于线上服务影响更大。



技术实现要素:

有鉴于此,本发明提出一种服务切换方法和装置,欲实现提高第三方服务的可靠性,进而提高业务稳定性的目的。

为了实现上述目的,现提出的方案如下:

一种服务切换方法,包括:

获取正常服务地址,并发起调用正常服务请求;

统计调用正常服务请求失败的次数;

如果所述调用正常服务请求失败的次数达到预设阈值,则获取备用服务地址,并发起调用备用服务请求;

监测正常服务是否可用,若是,则执行获取正常服务地址,并发起调用正常服务请求步骤。

优选的,所述统计调用正常服务请求失败的次数,具体为:

异步发送activemq消息统计调用正常服务请求失败的次数。

优选的,所述异步发送activemq消息统计调用正常服务请求失败的次数,具体为:

异步发送activemq消息至所述正常服务;

接收包含键值和第一时间的反馈信息;

根据所述键值匹配得到与其对应的服务配置信息,所述服务配置信息包括:服务状态、时间阈值和时间参数;

判断所述服务状态是否为切换服务状态,若否,则将所述第一时间减去所述时间参数,得到第一差值;

判断所述第一差值是否大于所述时间阈值,若是,则将统计调用正常服务请求失败的次数的计数器清零,且更新所述时间参数为当前时间,若否,则所述计数器计数值加1。

优选的,所述方法,还包括:

在所述发起调用备用服务请求后,向目标用户终端发送包含切换服务信息的短信通知;和/或,

在监测到所述正常服务可用且执行获取正常服务地址,并发起调用正常服务请求步骤后,向所述目标用户终端发送包含切回正常服务信息的短息通知。

优选的,所述监测正常服务是否可用,具体为:

通过options操作监测所述正常服务是否可用。

一种服务切换装置,包括:

正常服务单元,用于获取正常服务地址,并发起调用正常服务请求;

故障统计单元,用于统计调用正常服务请求失败的次数;

服务切换单元,用于如果所述调用正常服务请求失败的次数达到预设阈值,则获取备用服务地址,并发起调用备用服务请求;

服务监测单元,用于监测正常服务是否可用,若是,则执行所述正常服务单元。

优选的,所述故障统计单元,具体用于:

异步发送activemq消息统计调用正常服务请求失败的次数。

优选的,所述故障统计单元,包括:

发送子单元,用于异步发送activemq消息至所述正常服务;

接收子单元,用于接收包含键值和第一时间的反馈信息;

匹配子单元,用于根据所述键值匹配得到与其对应的服务配置信息,所述服务配置信息包括:服务状态、时间阈值和时间参数;

第一判断子单元,用于判断所述服务状态是否为切换服务状态,若否,则将所述第一时间减去所述时间参数,得到第一差值;

第二判断子单元,用于判断所述第一差值是否大于所述时间阈值,若是,则将统计调用正常服务请求失败的次数的计数器清零,且更新所述时间参数为当前时间,若否,则所述计数器计数值加1。

优选的,所述装置,还包括:

第一通知单元,用于在所述发起调用备用服务请求后,向目标用户终端发送包含切换服务信息的短信通知;和/或,

第一通知单元,用于在在监测到所述正常服务可用且执行获取正常服务地址,并发起调用正常服务请求步骤后,向所述目标用户终端发送包含切回正常服务信息的短息通知。

优选的,所述服务监测单元,具体用于:

通过options操作监测所述正常服务是否可用,若是,则执行所述正常服务单元。

与现有技术相比,本发明的技术方案具有以下优点:

上述技术方案提供的一种服务切换方法和装置,在业务依赖的正常服务不可用时,即调用正常服务请求失败的次数达到预设阈值时,自动触发切换机制,获取备用服务地址,启用备用服务;且在判断出正常服务不可用后,监测正常服务是否可用,若检测出正常服务可用,则切回服务,即获取正常服务地址,并发起调用正常服务请求。通过正常服务和备用服务的自动切换,提高了第三方服务的可靠性,进而提高业务稳定性。并且,整个过程无需人工干预,用户体验较好。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种服务切换方法的流程图;

图2为本发明实施例提供的一种异步发送activemq消息统计调用正常服务请求失败的次数的方法的流程图;

图3为本发明实施例提供的一种服务切换装置的示意图;

图4为本发明实施例提供的一种故障统计单元的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种服务切换方法,参见图1所示,该方法包括:

步骤s11:获取正常服务地址,并发起调用正常服务请求;

调用geturl(key)接口获取依赖的正常服务地址,发起调用正常服务请求。

步骤s12:统计调用正常服务请求失败的次数;

通过http(超文本传输协议,hypertexttransferprotocol))请求调用第三方服务时,遇到网络不通或者服务不可用时可以及时捕获到错误原因,利用mq(activemq)异步转发消息收集错误次数,即在调用正常服务超时后,调用seterrornum(key,timestamp)接口异步发送mq消息统计调用正常服务请求失败的次数。异步收集指定服务的错误次数,不影响正常业务。

步骤s13:如果所述调用正常服务请求失败的次数达到预设阈值,则获取备用服务地址,并发起调用备用服务请求。

当调用正常服务请求失败次数达到预设阈值时,进行切换服务。切换服务是指将当前使用的服务切换到该服务的备用服务上。以视频直播中的拉流服务为例。当调用观看流服务失败次数达到一定阈值时,自动触发切换机制,启用备用地址来继续支持观看流服务,当服务恢复时会自动切回,整个过程无须人工干预,业务是无感知的。

步骤s14:监测正常服务是否可用,若是,则执行获取正常服务地址,并发起调用正常服务请求步骤。

在切换服务完成后,开始实时检测正常服务是否可用。在检测出正常服务可用后,切回服务并停止监测,切回服务与切换服务相对。如某一个服务提供了正常服务地址a,以及其备用服务地址b。当a停止服务时,便启用b服务,称之为切换服务;当a服务可用时,启用a服务,停止b服务,称之为切回服务。

本发明实施例提供的服务切换方法,在业务依赖的正常服务不可用时,即调用正常服务请求失败的次数达到预设阈值时,自动触发切换机制,获取备用服务地址,启用备用服务;且在判断出正常服务不可用后,监测正常服务是否可用,若检测出正常服务可用,则切回服务,即获取正常服务地址,并发起调用正常服务请求。通过正常服务和备用服务的自动切换,提高了第三方服务的可靠性,进而提高业务稳定性。并且,整个过程无需人工干预,用户体验较好。

options请求方法的主要用途包括获取服务器支持的http请求方法和原理检查服务器的性能。利用这一特性,通过options操作监测(实时检测)正常服务是否可用。具体的,利用status200判断正常服务是否可用,利用options对服务发起请求,如果在返回的数据中的http状态码为200,则确定该服务是可用的,如果在返回的数据中的http状态码为非200,则认为该服务不可用。

正常服务不可用时的切换服务过程,以及正常服务可用时的切回服务过程,都是自动完成的,业务是无感知的。为使得第三方服务商及时对不可用服务进行维护,还可以在服务切换后向相应的用户终端发送短信通知。具体的,在发起调用备用服务请求后,向目标用户终端发送包含切换服务信息的短信通知;和/或,

在监测到所述正常服务可用且执行获取正常服务地址,并发起调用正常服务请求步骤后,向所述目标用户终端发送包含切回正常服务信息的短息通知。

参见图2所示,为本发明实施例提供一种异步发送activemq消息统计调用正常服务请求失败的次数的方法的流程图,该方法包括:

步骤s21:异步发送activemq消息至所述正常服务;

调用服务超时后,调用seterrornum(key,timestamp)接口异步发送mq消息;

步骤s22:接收包含键值和第一时间的反馈信息;

键值即为seterrornum(key,timestamp)中的参数key,第一时间即为seterrornum(key,timestamp)中的参数timestamp。timestamp是指该返回消息产生时刻的时间戳。

步骤s23:根据所述键值匹配得到与其对应的服务配置信息,所述服务配置信息包括:服务状态、时间阈值和时间参数;

根据接收到的键值(key),从数据库redis中匹配得到与该键值对应的服务配置信息。数据库redis中的服务配置信息(key_info)是以键值对的形式存储的。服务配置信息的键为key+“_info”,这样通过get(key+“_info”)从数据库redis中获取得到相应的服务配置信息。服务配置信息包括masterurl、backupurl、period、maxerrornum、inittimestamp和isswitch,其中,isswitch为服务状态、period为时间阈值、inittimestamp为时间参数、maxerrornum为预设阈值。

步骤s24:判断所述服务状态是否为切换服务状态,若否,则将所述第一时间减去所述时间参数,得到第一差值;

如果isswitch=true,则表示该key对应的服务已经切换,即服务状态为切换服务状态;如果isswitch=false,则表示该key对应的服务没有切换,即服务状态为未切换服务状态。

步骤s25:判断所述第一差值是否大于所述时间阈值,若是,则将统计调用正常服务请求失败的次数的计数器清零,且更新所述时间参数为当前时间,若否,则所述计数器计数值加1。

将判断第一差值(timestamp-inittimestamp)是否大于时间阈值(period)。inittimestamp是指当判断出timestamp-inittimestamp>period后,重新记录的那一时刻的时间戳。例如,period=300,inittimestamp=0,而某一条反馈消息的timestamp=150,timestamp-inittimestamp=150<300,则认为该条反馈消息未超过时间阈值,将统计调用正常服务请求失败的次数的计数器计数值加1。由于redis针对同一key的写操作互斥,进而保证了计数器的准确性。redis针对同一key的写操作互斥指的是,针对同一个对象(即key)的修改(写)在同一个时间点只能有一个进行操作,不支持同时由多个进行写操作,这便是互斥。正是因为这一特性,保证了在对同一个数值进行累加操作(计数器)时,一定是后一个的加1操作是基于前一个加1后的数值进行的。如两个都要对a进行加1操作(当前a=0),利用这一互斥特性,不会出现都在a=0的基础上加1(导致最终a=1),而是第一个在a=0的基础上加1变为a=1,另一个在a=1的基础上再加1变为a=2,进而保障了计数器的准确性。

如果统计调用正常服务请求失败的次数的计数器的计数值达到预设阈值(maxerrornum),则切换服务,设定isswitch=true,并在切回服务后,设定isswitch=false、计数器清零以及更新inittimestamp为当前时间。

可以通过redis的setnx命令实现分布式锁,来保证服务的切换在高并发情况下不受干扰。具体的,操作命令为setnxkeyvalue。将key的值设为value,当且仅当key不存在。若给定的key已经存在,则setnx不做任何动作。即如果setnx返回1,说明该进程获得锁,获得了锁保证了服务不受干扰。如果setnx返回0,说明其他进程已经获得了锁,进程不能进入后续逻辑,不能进入后续逻辑,保证了只有前面获得锁的进程进入了后续逻辑,使得服务不受干扰。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

参见图3所示,为本发明实施例提供的一种服务切换装置的示意图,该装置包括:

正常服务单元11,用于获取正常服务地址,并发起调用正常服务请求;

故障统计单元12,用于统计调用正常服务请求失败的次数;

服务切换单元13,用于如果所述调用正常服务请求失败的次数达到预设阈值,则获取备用服务地址,并发起调用备用服务请求;

服务监测单元14,用于监测正常服务是否可用,若是,则执行所述正常服务单元。

本发明实施例提供的服务切换装置,在业务依赖的正常服务不可用时,即调用正常服务请求失败的次数达到预设阈值时,自动触发切换机制,获取备用服务地址,启用备用服务;且在判断出正常服务不可用后,监测正常服务是否可用,若检测出正常服务可用,则切回服务,即获取正常服务地址,并发起调用正常服务请求。通过正常服务和备用服务的自动切换,提高了第三方服务的可靠性,进而提高业务稳定性。并且,整个过程无需人工干预,用户体验较好。

优选的,所述故障统计单元,具体用于:异步发送activemq消息统计调用正常服务请求失败的次数。

优选的,所述服务监测单元,具体用于:通过options操作监测所述正常服务是否可用,若是,则执行所述正常服务单元。

参见图4所示,为本发明实施例提供的一种故障统计单元的示意图,该单元包括:

发送子单元21,用于异步发送activemq消息至所述正常服务;

接收子单元22,用于接收包含键值和第一时间的反馈信息;

匹配子单元23,用于根据所述键值匹配得到与其对应的服务配置信息,所述服务配置信息包括:服务状态、时间阈值和时间参数;

第一判断子单元24,用于判断所述服务状态是否为切换服务状态,若否,则将所述第一时间减去所述时间参数,得到第一差值;

第二判断子单元25,用于判断所述第一差值是否大于所述时间阈值,若是,则将统计调用正常服务请求失败的次数的计数器清零,且更新所述时间参数为当前时间,若否,则所述计数器计数值加1。

优选的,服务切换装置还可以包括:第一通知单元和/或第二通知单元,

第一通知单元,用于在所述发起调用备用服务请求后,向目标用户终端发送包含切换服务信息的短信通知;

第二通知单元,用于在在监测到所述正常服务可用且执行获取正常服务地址,并发起调用正常服务请求步骤后,向所述目标用户终端发送包含切回正常服务信息的短息通知。

对于装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对本发明所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1