一种服务故障动态调控方法与系统
技术领域
本发明属于计算机
技术领域
,更具体地说,是涉及一种服务故障动态调控方法与系统。背景技术
随着云计算技术在企业内的快速使用,以及企业对于核心服务可用性要求的不断提高,如何结合云计算技术为企业业务持续发展提供可扩展的、可靠性更高的基础设施支持,就成为企业上云必须要关注的问题。同城双活、异地容灾等部署模式,都是经典的解决企业在服务异常或者灾难情况下保障服务可用性的解决方案。
同城双活是在同城或相近区域内建立两个机房。同城双机房距离比较近,通信线路质量较好,比较容易实现数据的同步复制,保证高度的数据完整性和数据零丢失。同城两个机房各承担一部分流量,一般入口流量完全随机,内部RPC调用尽量通过就近路由闭环在同机房,相当于两个机房镜像部署了两个独立集群,因此当服务所在的城市或者地区网络整体故障、发生不可抗拒的自然灾害的时候,会产生服务故障以及丢失数据风险。
异地容灾就是通过建立异地容灾中心,做数据的远程备份,在灾难发生之后要确保原有的数据不会丢失或者遭到破坏,因此异地容灾就是建立一个数据的备份系统或者一个容灾系统,在产生服务故障或者数据丢失后,容灾系统提供的服务恢复时间会很长。
发明内容
本发明的目的在于提供一种服务故障动态调控方法与系统,旨在解决现有同城双活或者异地容灾系统在自然灾难或者服务异常情况下,容易出现丢失数据且提供的服务恢复时间长的问题。
为实现上述目的,本发明采用的技术方案是:一种服务故障动态调控方法,包括以下步骤:
步骤1:获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
步骤2:利用所述主服务实例地址向主服务注册中心注册生成主服务实例节点资源列表;
步骤3:利用所述备份服务实例地址向备份服务注册中心注册生成备份服务实例节点资源列表;
步骤4:获取服务调用信息;
步骤5:所述主服务注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务;
步骤6:当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述备份服务注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务。
优选的,所述步骤5:所述主服务注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务,包括:
步骤5.1:所述主服务注册中心根据所述服务调用信息发现所述主服务实例节点资源列表中可用的主服务实例;
步骤5.2:根据所述可用的主服务实例得到相应的主服务实例的地址;
步骤5.3:利用所述相应的主服务实例的地址调用相应的服务。
优选的,所述步骤6:当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述备份服务注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务,包括:
步骤6.1:所述备份服务注册中心根据所述服务调用信息发现所述备份服务实例节点资源列表中可用的备份服务实例;
步骤6.2:根据所述可用的备份服务实例得到相应的备份服务实例的地址;
步骤6.3:利用所述相应的备份服务实例的地址调用相应的服务。
本发明还提供了一种服务故障动态调控系统,包括:
服务实例地址获取模块,用于获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
主服务实例注册模块,用于利用所述主服务实例地址向主服务注册中心注册生成主服务实例节点资源列表;
备份服务实例注册模块,用于利用所述备份服务实例地址向备份服务注册中心注册生成备份服务实例节点资源列表;
服务调用信息获取模块,用于获取服务调用信息;
主服务注册中心调用模块,用于所述主服务注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务;
备份服务注册中心调用模块,用于当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述备份服务注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务。
本发明还提供了一种服务故障动态调控方法,包括以下步骤:
步骤1:获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
步骤2:利用所述主服务实例地址和所述备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表;
步骤3:获取服务调用信息;
步骤4:所述跨站点统一注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务;
步骤5:当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述跨站点统一注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务。
优选的,所述步骤2:利用所述主服务实例地址和所述备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表,包括:
步骤2.1:获取所述主服务器站点的主网关地址;
步骤2.2:根据所述主服务实例地址和所述主网关地址向所述跨站点统一注册中心注册生成所述主服务实例节点资源列表;
步骤2.3:获取所述备份服务器站点上的备份网关地址;
步骤2.4:根据所述备份服务实例地址和所述备份网关地址向所述跨站点统一注册中心注册生成所述备份服务实例节点资源列表。
优选的,所述步骤4:所述跨站点统一注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务,包括:
步骤4.1:利用所述跨站点统一注册中心对所述主服务实例节点资源列表对每一个服务实例配置相应的主服务独立进程;所述主服务独立进程包括:相应主服务实例的地址,相应主服务实例所处可用区,相应主服务实例的健康状态;
步骤4.2:所述跨站点统一注册中心根据所述服务调用信息发现所述主服务独立进程中可用的主服务实例和相应主服务实例的地址;
步骤4.3:根据所述主服务实例的地址调用相应的服务。
优选的,所述步骤5:当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述跨站点统一注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务,包括:
步骤5.1:利用所述跨站点统一注册中心对所述备份服务实例节点资源列表对每一个备份服务实例配置相应的备份服务独立进程;所述备份服务独立进程包括:相应备份服务实例的地址,相应备份服务实例所处可用区,相应备份服务实例的健康状态;
步骤5.2:所述跨站点统一注册中心根据所述服务调用信息发现所述备份服务独立进程中可用的备份服务实例和相应备份服务实例的地址;
步骤5.3:根据所述备份服务实例的地址调用相应的服务。
本发明还提供了一种服务故障动态调控系统,包括:
服务实例地址获取模块,用于获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
服务注册模块,用于利用所述主服务实例地址和所述备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表;
服务调用信息获取模块,用于获取服务调用信息;
主服务实例配置模块,用于所述跨站点统一注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务;
备份服务实例配置模块,用于当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述跨站点统一注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务。
本发明提供的一种服务故障动态调控方法与系统的有益效果在于:与现有技术相比,本发明的一种服务故障动态调控方法,包括:获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;利用所述主服务实例地址和所述备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表;所述跨站点统一注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务;当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述跨站点统一注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务。本发明利用跨站点统一注册中心来进行服务实例的注册与发现,当主服务器站点发现故障时,跨站点统一注册中心会自动切换到备份服务器站点,利用备份服务实例节点资源列表调用相应服务,本发明可以在主服务站发生故障时,能够将相应的服务实例平滑的进行切换,保证了服务实例所依赖的数据的一致性,减少了对业务应用的影响,降低了使用成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种服务故障动态调控方法原理图;
图2为本发明实施例1提供的一种服务故障动态调控方法流程图;
图3为本发明实施例2提供的一种服务故障动态调控方法流程图;
图4为本发明实施例2提供的跨站点统一注册中心调控原理图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的目的在于提供一种服务故障动态调控方法与系统,旨在解决现有同城双活或者异地容灾系统在自然灾难或者服务异常情况下,容易出现丢失数据且提供的服务恢复时间长的问题。
在本发明中,要更好的对服务之间的调用进行管控,比较好的方式是基于统一的注册中心来进行服务注册与发现,然后就可以利用注册中心来实现可用服务的动态发现。在具备统一注册中心时,本发明可以对注册中心进行扩展,允许为每个服务设置备份服务地址,调用方在进行服务发现时优先返回主服务实例地址。当主服务实例不可用时自动切换到备份服务实例地址上。
实施例1:
请一并参阅图1-2,为实现上述目的,本发明采用的技术方案是:一种服务故障动态调控方法,包括以下步骤:
S1:获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
S2:利用主服务实例地址向主服务注册中心注册生成主服务实例节点资源列表;主服务实例节点资源列表会定期向主服务注册中心发送心跳,表示自己处于健康状态,也可以由主服务注册中心进行主动探活。
S3:利用备份服务实例地址向备份服务注册中心注册生成备份服务实例节点资源列表;备份服务实例节点资源列表会定期向备份服务注册中心发送心跳,表示自己处于健康状态,也可以由备份服务注册中心进行主动探活。
在实际应用中,每个站点均部署一个注册中心集群,每个站点的服务均向当前站点的注册中心注册,即在本发明中,备份服务器站点可以为一个也可以为多个,相应的其备份服务注册中心注册的数量也与备份服务器站点的数量一致。
不同站点之间,如果服务实例需要相互备份,则服务实例除了向本站点的注册中心进行注册外,同时还需要向其他注册中心注册,以便可以被其他注册中心的服务实例发现,也就是服务实例是基于多注册中心的服务实例注册与发现。由于网络不可直达,一般会通过相应站点的网关进行注册和访问其他注册中心。
这里通过对注册中心增加元数据扩展能力,来支持备份服务的定义,具体扩展方式如下:
通过为每个注册中心的服务上增加metadata(元数据)来允许用户对各个服务定义扩展数据,这里为生产者服务producer-service添加backup-services(备份服务)的元数据来定义不同可用区对应的备份服务的地址。这样,当消费方的独立进程通过注册中心进行服务发现时,便会获取到主服务、备份服务两种类型的服务实例列表。当独立进程接收到消费方对producer-service的调用时,流量被独立进程进行拦截,并根据producer-service的服务实例状态来确定是调用主服务,还是切换到备份服务的调用上,实现服务状态的感知及自动调用切换。
同时,当主服务恢复后,注册中心也会同步新的状态,最终下发到调用方的独立进程上,从而自动实现从备份服务的调用切换回主服务的调用上。
S4:获取服务调用信息;
S5:主服务注册中心根据服务调用信息利用主服务实例节点资源列表调用相应的服务;
S5具体包括:
S5.1:主服务注册中心根据服务调用信息发现主服务实例节点资源列表中可用的主服务实例;
S5.2:根据可用的主服务实例得到相应的主服务实例的地址;
S5.3:利用相应的主服务实例的地址调用相应的服务。
在本发明中,站点内的服务实例通过相应的注册中心进行服务发现,会优先发现本站点健康的服务实例列表,并发起服务调用,就近访问保证调用的性能。
S6:当主服务实例节点资源列表中的相应主服务实例不可用时,备份服务注册中心根据服务调用信息利用备份服务实例节点资源列表调用相应的服务。
在本发明中,当本站点的所有服务实例不可用时,注册中心会返回其他站点注册的服务,由其他站点的服务继续提供正常服务,下面对这一步骤进行详细说明。
S6具体包括:
S6.1:备份服务注册中心根据服务调用信息发现备份服务实例节点资源列表中可用的备份服务实例;
S6.2:根据可用的备份服务实例得到相应的备份服务实例的地址;
S6.3:利用相应的备份服务实例的地址调用相应的服务。
需要说明的是,本发明中跨站点的服务实例调用,由于网络不可直达,一般会通过站点的网关进行访问,且在注册中心不可用时,服务实例之间可使用本地缓存继续进行调用。
本发明还提供了一种服务故障动态调控系统,包括:
服务实例地址获取模块,用于获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
主服务实例注册模块,用于利用主服务实例地址向主服务注册中心注册生成主服务实例节点资源列表;
备份服务实例注册模块,用于利用备份服务实例地址向备份服务注册中心注册生成备份服务实例节点资源列表;
服务调用信息获取模块,用于获取服务调用信息;
主服务注册中心调用模块,用于主服务注册中心根据服务调用信息利用主服务实例节点资源列表调用相应的服务;
备份服务注册中心调用模块,用于当主服务实例节点资源列表中的相应主服务实例不可用时,备份服务注册中心根据服务调用信息利用备份服务实例节点资源列表调用相应的服务。
本发明通过建立注册中心,可以在一个可用区的服务实例全部故障后,将备份服务实例的调用动态切换到其他可用区的服务上,减少了对业务应用的影响,降低了使用成本。
实施例2:
请参阅图3,本发明还提供了一种服务故障动态调控方法,包括以下步骤:
S1:获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
S2:利用主服务实例地址和备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表;
在本发明中,每个站点的服务实例向统一注册中心注册,此时需要包括站点内地址(为同一站点服务调用使用)、网关地址(为跨站点服务调用使用)。
各个服务实例会定期向注册中心发送心跳,表示自己处于健康状态,也可以由跨站点统一注册中心进行主动探活。
跨站点统一注册中心进行分布式部署,可以跨2个、3个站点或者更多的站点,保证一个站点故障,不会造成多数注册的服务实例的不可用,也就是跨站点统一注册中心自身的高可用性。
下面对着一过程进行进一步的描述。
S2具体包括:
S2.1:获取主服务器站点的主网关地址;
S2.2:根据主服务实例地址和主网关地址向跨站点统一注册中心注册生成主服务实例节点资源列表;
S2.3:获取备份服务器站点上的备份网关地址;
S2.4:根据备份服务实例地址和备份网关地址向跨站点统一注册中心注册生成备份服务实例节点资源列表。
站点内的服务通过跨站点统一注册中心进行服务发现,会优先发现本站点健康的服务实例节点资源列表,并发起服务调用,就近访问保证调用的性能。
当本站点的所有主服务实例不可用时,注册中心会返回其他站点注册的服务,由其他站点(备份站点)的服务实例继续提供正常服务。
在本发明中,跨站点的服务调用,由于网络不可直达,一般会通过站点的网关进行访问。
S3:获取服务调用信息;
S4:跨站点统一注册中心根据服务调用信息利用主服务实例节点资源列表调用相应的服务;
S4具体包括:
在有了跨多个可用区的跨站点统一注册中心后,我们需要解决服务实例如何基于跨站点统一注册中心进行切换的问题。为了降低对服务实例的侵入,本发明通过引入一个独立进程进行流量拦截及路由,基本工作原理如下:
S4.1:利用跨站点统一注册中心对主服务实例节点资源列表对每一个服务实例配置相应的主服务独立进程;主服务独立进程包括:相应主服务实例的地址,相应主服务实例所处可用区,相应主服务实例的健康状态;
S4.2:跨站点统一注册中心根据服务调用信息发现主服务独立进程中可用的主服务实例和相应主服务实例的地址;
本发明在每一个服务实例所在的环境上部署一个独立的进程,用来对应用的流量进行透明拦截,可以通过设置相关的iptables规则实现,这样应用的进出流量都会首先通过部署的独立进程,再进入用户服务,从而在不侵入用户服务的条件下,使独立进程有机会对网络流量进行处理。
基于iptables的流量拦截规则如下:
iptables-t nat-A OUTPUT-p tcp-d 172.31.0.0/16-j REDIRECT--to-port31000
该指令的目的是将目标地址为172.31.0.0/16网段的所有流量进行重定向操作,发送到独立进程所监听的31000端口上,从而实现应用流量的透明拦截。独立进程之间按照规范,都通过统一的31000端口进行通讯,并在流量经过时对进、出独立进程的流量进行控制及相关治理能力。
由于服务的进、出流量均会被独立进程拦截,独立进程就可以对通信的协议按照标准格式进行解析,从而实现高级的治理能力,包括路由、限流、熔断等。这里以路由为例进行消息说明:
假设服务A会调用服务B、C,并且以HTTP协议进行通讯,并且根据不同的访问路径进行路由,访问/consume-b路径时,A应该调用B,访问/consume-c路径时,A应该调用C。那么传统开发模式下,用户需要在自己的业务应用里实现该能力。在本发明中,业务应用无需关心不同路由的目标服务地址,只需要在独立进程上进行对应配置,/consume-b的路径访问路由到服务B,/consume-c的路径访问路由到服务C。独立进程可以根据HTTP协议的规范获取到访问的路径地址,然后根据从注册中心获取到的服务实例列表进行流量的转发。独立进程甚至可以控制在流量转发时的负载均衡策略,比如以轮询、随机还是会话保持的方式,也可以根据实际调用的结果来决定是否切换目的服务实例地址及重试策略,在不需要业务应用修改代码的情况下实现更好的服务治理策略的运用。
S4.3:根据主服务实例的地址调用相应的服务。
S5:当主服务实例节点资源列表中的相应主服务实例不可用时,跨站点统一注册中心根据服务调用信息利用备份服务实例节点资源列表调用相应的服务。
通过注册中心对独立进程进行配置下发,里面包括接入注册中心的服务的基础信息,包括服务实例的地址,所处可用区,健康状态等,这样让服务了解其他服务的运行情况。
S5具体包括:
S5.1:利用跨站点统一注册中心对备份服务实例节点资源列表对每一个备份服务实例配置相应的备份服务独立进程;备份服务独立进程包括:相应备份服务实例的地址,相应备份服务实例所处可用区,相应备份服务实例的健康状态;
S5.2:跨站点统一注册中心根据服务调用信息发现备份服务独立进程中可用的备份服务实例和相应备份服务实例的地址;
S5.3:根据备份服务实例的地址调用相应的服务。
下面对这一过程进行进一步的说明:
请参阅4,当两个服务之间调用时,比如服务B中的独立进程调用C时,会对调用情况进行统计,当发生调用异常时主动将C的实例从调用列表中删除。如果C的可用实例全部被删除,则B中的独立进程基于从注册中心的服务发现结果,自动切换到对另外一个可用区部署的C’的调用上,完成服务调用的动态切换。同时,在本发明中还可以通过注册中心,下发更多的控制策略,比如对服务的访问流量的限流、安全认证、按权重向不同服务版本转发等,实现独立于用户应用之外的服务治理能力。
本发明公开的一种服务故障动态调控方法,与现有技术相比具有以下优点:
1、对核心组件注册中心的跨多个可用区部署,通过多注册中心同步或者跨区部署的模式,实现跨区服务之间的服务注册与发现,保障了控制端的高可用。
2、通过部署独立进程的方式,把相关服务治理能力下沉到通用层,在统一数据面通过服务发现解决服务故障动态控制的能力。
3、通过注册中心多个可用区服务的注册,独立进程通过与注册中心的交互,根据自己所属的区域,可以优先进行同一个可用区内的注册与发现,提高调用的效率;在同一个可用区服务不可用时,自动使用其他可用区的外部地址进行访问,实现动态的服务发现与调用切换。
4、独立进程方便扩展出各种通用的能力,用来对服务的流量进行治理,包括服务的限流、安全、认证等,有利于形成统一服务治理,并且不会对原用用户服务进行改造,可以独立开发、升级、维护。
5、将控制面(注册与控制中心)和数据面(独立进程,透明流量拦截)分离,解耦了控制数据和业务数据,彼此独立,而不会相互影响。
本发明还提供了一种服务故障动态调控系统,包括:
服务实例地址获取模块,用于获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;
服务注册模块,用于利用主服务实例地址和备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表;
服务调用信息获取模块,用于获取服务调用信息;
主服务实例配置模块,用于跨站点统一注册中心根据服务调用信息利用主服务实例节点资源列表调用相应的服务;
备份服务实例配置模块,用于当主服务实例节点资源列表中的相应主服务实例不可用时,跨站点统一注册中心根据服务调用信息利用备份服务实例节点资源列表调用相应的服务。
本发明公开了一种服务故障动态调控方法与系统,本发明公开的一种服务故障动态调控方法,包括:获取主服务器站点上的主服务实例地址和备份服务器站点上的备份服务实例地址;利用所述主服务实例地址和所述备份服务实例地址向跨站点统一注册中心注册生成主服务实例节点资源列表和备份服务实例节点资源列表;所述跨站点统一注册中心根据所述服务调用信息利用所述主服务实例节点资源列表调用相应的服务;当所述主服务实例节点资源列表中的相应主服务实例不可用时,所述跨站点统一注册中心根据所述服务调用信息利用所述备份服务实例节点资源列表调用相应的服务。本发明利用跨站点统一注册中心来进行服务实例的注册与发现,当主服务器站点发现故障时,跨站点统一注册中心会自动切换到备份服务器站点,利用备份服务实例节点资源列表调用相应服务,本发明可以在主服务站发生故障时,能够将相应的服务实例平滑的进行切换,保证了服务实例所依赖的数据的一致性,减少了对业务应用的影响,降低了使用成本。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:主备系统切换方法、装置、服务器及主备系统