CN111538612B - 一种通过服务降级实现主备服务器快速切换方法及系统 - Google Patents

一种通过服务降级实现主备服务器快速切换方法及系统 Download PDF

Info

Publication number
CN111538612B
CN111538612B CN202010334335.2A CN202010334335A CN111538612B CN 111538612 B CN111538612 B CN 111538612B CN 202010334335 A CN202010334335 A CN 202010334335A CN 111538612 B CN111538612 B CN 111538612B
Authority
CN
China
Prior art keywords
cluster
server
big data
application
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010334335.2A
Other languages
English (en)
Other versions
CN111538612A (zh
Inventor
杨文亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Si Tech Information Technology Co Ltd
Original Assignee
Beijing Si Tech Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Si Tech Information Technology Co Ltd filed Critical Beijing Si Tech Information Technology Co Ltd
Priority to CN202010334335.2A priority Critical patent/CN111538612B/zh
Publication of CN111538612A publication Critical patent/CN111538612A/zh
Application granted granted Critical
Publication of CN111538612B publication Critical patent/CN111538612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种通过服务降级实现主备服务器快速切换方法及系统,所述快速切换系统包括触点、负载均衡、应用服务器、应用中间层和大数据集群;所述应用服务器内运行服务降级算法;触点包括多种连接互联网的办公或运动设备;触点通过http协议将服务器访问需求发送给负载均衡;应用服务器接受均衡负载发送过来的服务器访问需求,并将服务器访问需求首先通过应用中间层的生产模块访问大数据集群内的生产集群和kafka集群;当应用中间层的生产模块故障时,则应用服务器通过应用中间层的备份模块访问大数据集群内的备份集群和kafka集群。本发明解决了服务器主备切换方法面对的缺乏自愈能力和容易形成雪崩效应的问题。

Description

一种通过服务降级实现主备服务器快速切换方法及系统
技术领域
本发明涉及服务器主备切换技术领域,具体涉及一种通过服务降级实现主备服务器快速切换方法及系统。
背景技术
分布式系统环境下,服务间依赖非常常见,一个业务调用通常依赖多个基础服务。对于同步调用,当A服务不可用时,B服务请求线程被阻塞,当有大批量请求调用A服务时,最终可能导致整个B服务资源耗尽,无法继续对外提供服务。
目前我们好多产品都有容灾策略,比如主备切换策略,但是一般都是通过告警侦查后手动进行主备切换,在切换的过程中服务都是不可用,并且切换的时间比较长。
例如常见的方法为通过nginx进行主备切换,切换操作方法如下:
(1)主服务发生故障时,修改nginx配置,重新加载nginx完成主备切换。
(2)同时维护两个nginx配置文件。1个配置生产接口,另一个配置备份接口。
(3)采用shell脚本,切换nginx配置文件,并重新加载nginx。
采用上述方法面对如下问题:
(1)服务不可用期间可能沿请求调用链向上传递,形成雪崩效应。
(2)服务请求异常后没有自愈的能力,应用无法提供服务导致系统故障。
发明内容
针对服务器主备切换方法面对的缺乏自愈能力和容易形成雪崩效应的问题,本发明提供一种通过服务降级实现主备服务器快速切换方法及系统。
本发明公开了一种通过服务降级实现主备服务器快速切换系统,所述快速切换系统包括触点、负载均衡、应用服务器、应用中间层和大数据集群;所述应用服务器内运行服务降级算法;
所述触点包括多种连接互联网的办公或运动设备;
所述触点通过http协议将服务器访问需求发送给负载均衡;
所述应用服务器接受均衡负载发送过来的服务器访问需求,并将服务器访问需求首先通过应用中间层的生产模块访问大数据集群内的生产集群和kafka集群;当应用中间层的生产模块故障时,则应用服务器通过应用中间层的备份模块访问大数据集群内的备份集群和kafka集群。
优选地,上述大数据集群的生产集群和备份集群内数据按日同步。
优选地,上述负载均衡包括OIP模块和F5模块,OIP模块将接收到的触点的http协议数据发送给F5.
优选地,上述应用中间层的生产模块通过大数据集群的生产集群读取数据,向大数据集群的kafka集群写入统计数据。
优选地,上述应用中间层的备用模块通过大数据集群的备份集群读取数据,向大数据集群的kafka集群写入统计数据。
优选地,上述大数据集群内的kafka集群通过异步通信协议向生产集群写入数据。
一种通过服务降级实现主备服务器快速切换方法,所述切换方法运行于应用服务器内,服务降级算法采用Hystrix技术,具体工作过程如下:
步骤一:构造一个HystrixCommand或HystrixObservableCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数;
步骤二:执行Hystrix命令;
步骤三:判断是否使用缓存响应请求,若启用了缓存,且缓存可用,直接使用缓存响应请求;
步骤四:判断熔断器是否打开,如果打开,跳到步骤八;
步骤五:判断线程池/队列/信号量是否已满,已满则跳到步骤八;
步骤六:执行HystrixObservableCommand.construct()或HystrixCommand.run(),如果执行失败或者超时,跳到步骤八;否则,跳到步骤九;
步骤七:统计熔断器监控指标;
步骤八:走Fallback备用逻辑;
步骤九:返回请求响应。
与现有技术相比,本发明的有益效果为:
采用本发明的一种通过服务降级实现主备服务器快速切换方法及系统后,降低了服务主备切换时间,提升了实时营销服务性能。在某些条件下,调用备份实例的服务,秒级自动切换。实现应用服务配置降级逻辑,提高了服务器的可靠性和容灾响应效率。
附图说明
图1是本发明一种通过服务降级实现主备服务器快速切换系统的示意图。
图2是本发明一种通过服务降级实现主备服务器快速切换方法的工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
参见图1,一种通过服务降级实现主备服务器快速切换系统,所述快速切换系统包括触点、负载均衡、应用服务器、应用中间层和大数据集群;所述应用服务器内运行服务降级算法;
所述触点包括多种连接互联网的办公或运动设备;
所述触点通过http协议将服务器访问需求发送给负载均衡;
所述应用服务器接受均衡负载发送过来的服务器访问需求,并将服务器访问需求首先通过应用中间层的生产模块访问大数据集群内的生产集群和kafka集群;当应用中间层的生产模块故障时,则应用服务器通过应用中间层的备份模块访问大数据集群内的备份集群和kafka集群。
具体实施时,上述大数据集群的生产集群和备份集群内数据按日同步。
具体实施时,上述负载均衡包括OIP模块和F5模块,OIP模块将接收到的触点的http协议数据发送给F5.
具体实施时,上述应用中间层的生产模块通过大数据集群的生产集群读取数据,向大数据集群的kafka集群写入统计数据。
具体实施时,上述应用中间层的备用模块通过大数据集群的备份集群读取数据,向大数据集群的kafka集群写入统计数据。
具体实施时,上述大数据集群内的kafka集群通过异步通信协议向生产集群写入数据。
一种通过服务降级实现主备服务器快速切换方法,所述切换方法运行于应用服务器内,服务降级算法采用Hystrix技术,如图2所示,具体工作过程如下:
步骤一:构造一个HystrixCommand或HystrixObservableCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数;
步骤二:执行Hystrix命令;Hystrix提供了4种执行命令的函数,分别为execute()、queue()、observe()和toObservable();其中execute()和queue()适用于HystrixCommand对象,而observe()和toObservable()适用于HystrixObservableCommand对象。
其中execute()函数以同步堵塞方式执行run(),只支持接收一个值对象,hystrix会从线程池中取一个线程来执行run(),并等待返回值。
其中queue()函数以异步非阻塞方式执行run(),只支持接收一个值对象,调用queue()就直接返回一个Future对象,可通过Future.get()拿到run()的返回结果,但Future.get()是阻塞执行的;若执行成功,Future.get()返回单个返回值;当执行失败时,如果没有重写fallback,Future.get()抛出异常。
其中observe()函数事件注册前执行run()/construct(),支持接收多个值对象,取决于发射源;调用observe()函数会返回一个hot Observable,也就是说,调用observe()自动触发执行run()/construct(),无论是否存在订阅者。
如果继承的是HystrixCommand,hystrix会从线程池中取一个线程以非阻塞方式执行run();如果继承的是HystrixObservableCommand,将以调用线程阻塞执行construct()。
observe()使用方法:调用observe()会返回一个Observable对象;调用这个Observable对象的subscribe()方法完成事件注册,从而获取结果。
toObservable()使用方法:事件注册后执行run()/construct(),支持接收多个值对象,取决于发射源;调用toObservable()会返回一个cold Observable,也就是说,调用toObservable()不会立即触发执行run()/construct(),必须有订阅者订阅Observable时才会执行。
如果继承的是HystrixCommand,hystrix会从线程池中取一个线程以非阻塞方式执行run(),调用线程不必等待run();如果继承的是HystrixObservableCommand,将以调用线程堵塞执行construct(),调用线程需等待construct()执行完才能继续往下走。
toObservable()使用方法:调用observe()会返回一个Observable对象;调用这个Observable对象的subscribe()方法完成事件注册,从而获取结果。
需注意的是,HystrixCommand也支持toObservable()和observe(),但是即使将HystrixCommand转换成Observable,它也只能发射一个值对象,只有HystrixObservableCommand才支持发射多个值对象。
步骤三:判断是否使用缓存响应请求,若启用了缓存,且缓存可用,直接使用缓存响应请求;
步骤四:判断熔断器是否打开,如果打开,跳到步骤八;
步骤五:判断线程池/队列/信号量是否已满,已满则跳到步骤八;
步骤六:执行HystrixObservableCommand.construct()或HystrixCommand.run(),如果执行失败或者超时,跳到步骤八;否则,跳到步骤九;
步骤七:统计熔断器监控指标;Hystrix向熔断器报告成功、失败、拒绝和超时,熔断器保持滚动的一组计数器来计算统计信息;熔断器使用这些统计信息来确定电路何时应“跳闸”,这时它会将随后的所有请求短路,直到经过恢复期为止,在此之后,在首先检查某些运行状况检查之后,它将再次闭合电路。
步骤八:走Fallback备用逻辑;降级通常指务高峰期,为了保证核心服务正常运行,需要停掉一些不太重要的业务,或者某些服务不可用时,执行备用逻辑从故障服务中快速失败或快速返回,以保障主体业务不受影响;Hystrix技术提供的降级主要是为了容错,保证当前服务不受依赖服务故障的影响,从而提高服务的健壮性。要支持回退或降级处理,可以重写HystrixCommand的getFallBack方法或HystrixObservableCommand的resumeWithFallback方法。
Hystrix技术在以下几种情况下会走降级逻辑:
1、执行construct()或run()抛出异常;
2、熔断器打开导致命令短路;
3、命令的线程池和队列或信号量的容量超额,命令被拒绝;
4、命令执行超时。
步骤九:返回请求响应。
采用本发明的一种通过服务降级实现主备服务器快速切换方法及系统后,降低了服务主备切换时间,提升了实时营销服务性能。在某些条件下,调用备份实例的服务,秒级自动切换。实现应用服务配置降级逻辑,提高了服务器的可靠性和容灾响应效率。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种通过服务降级实现主备服务器快速切换系统,其特征在于:所述快速切换系统包括触点、负载均衡、应用服务器、应用中间层和大数据集群;
所述应用服务器内运行服务降级算法;
所述触点包括多种连接互联网的办公或运动设备;
所述触点通过http协议将服务器访问需求发送给负载均衡;
所述应用服务器接受均衡负载发送过来的服务器访问需求,并将服务器
访问需求首先通过应用中间层的生产模块访问大数据集群内的生产集群和kafka集群;当应用中间层的生产模块故障时,则应用服务器通过应用中间层的备份模块访问大数据集群内的备份集群和kafka集群;
其中,
服务降级算法采用Hystrix技术,具体工作过程如下:
步骤一:构造一个HystrixCommand或HystrixObservableCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数;
步骤二:执行Hystrix命令;
步骤三:判断是否使用缓存响应请求,若启用了缓存,且缓存可用,直接使用缓存响应请求;
步骤四:判断熔断器是否打开,如果打开,跳到步骤八;
步骤五:判断线程池/队列/信号量是否已满,已满则跳到步骤八;
步骤六:执行HystrixObservableCommand.construct()或HystrixCommand.run(),如果执行失败或者超时,跳到步骤八;否则,跳到步骤九;
步骤七:统计熔断器监控指标;
步骤八:走Fallback备用逻辑;
步骤九:返回请求响应。
2.根据权利要求1所述的一种通过服务降级实现主备服务器快速切换系统,其特征在于:所述大数据集群的生产集群和备份集群内数据按日同步。
3.根据权利要求1所述的一种通过服务降级实现主备服务器快速切换系统,其特征在于:所述负载均衡包括OIP模块和F5模块,OIP模块将接收到的触点的http协议数据发送给F5。
4.根据权利要求1所述的一种通过服务降级实现主备服务器快速切换系统,其特征在于:所述应用中间层的生产模块通过大数据集群的生产集群读取数据,向大数据集群的kafka集群写入统计数据。
5.根据权利要求1所述的一种通过服务降级实现主备服务器快速切换系统,其特征在于:所述应用中间层的备用模块通过大数据集群的备份集群读取数据,向大数据集群的kafka集群写入统计数据。
6.根据权利要求1所述的一种通过服务降级实现主备服务器快速切换系统,其特征在于:所述大数据集群内的kafka集群通过异步通信协议向生产集群写入数据。
CN202010334335.2A 2020-04-24 2020-04-24 一种通过服务降级实现主备服务器快速切换方法及系统 Active CN111538612B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010334335.2A CN111538612B (zh) 2020-04-24 2020-04-24 一种通过服务降级实现主备服务器快速切换方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010334335.2A CN111538612B (zh) 2020-04-24 2020-04-24 一种通过服务降级实现主备服务器快速切换方法及系统

Publications (2)

Publication Number Publication Date
CN111538612A CN111538612A (zh) 2020-08-14
CN111538612B true CN111538612B (zh) 2023-03-10

Family

ID=71978772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010334335.2A Active CN111538612B (zh) 2020-04-24 2020-04-24 一种通过服务降级实现主备服务器快速切换方法及系统

Country Status (1)

Country Link
CN (1) CN111538612B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109495312A (zh) * 2018-12-05 2019-03-19 广州鼎甲计算机科技有限公司 基于仲裁盘和双链路的高可用集群的实现方法和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008081267A1 (en) * 2006-12-29 2008-07-10 Nokia Corporation A method of handover of circuit-switched voice call to packet-switched voice call
CN104618127B (zh) * 2013-11-01 2019-01-29 深圳市腾讯计算机系统有限公司 主备存储节点切换方法和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109495312A (zh) * 2018-12-05 2019-03-19 广州鼎甲计算机科技有限公司 基于仲裁盘和双链路的高可用集群的实现方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
包建军 ; 霍振龙 ; 樊菁 ; .可靠实现煤矿双机热备系统的方法.2010,(第11期),第5-8页. *
卢帅.基于Kafka的消息发布订阅服务的设计与实现.2018,(第undefined期),第I138-201页. *
龙新征 ; 彭一明 ; 李若淼 ; .基于微服务框架的信息服务平台.2017,第47卷(第S1期),第48-52页. *

Also Published As

Publication number Publication date
CN111538612A (zh) 2020-08-14

Similar Documents

Publication Publication Date Title
CN108712464A (zh) 一种面向集群微服务高可用的实现方法
US8073952B2 (en) Proactive load balancing
CN105187249B (zh) 一种故障恢复方法及装置
US8032780B2 (en) Virtualization based high availability cluster system and method for managing failure in virtualization based high availability cluster system
CN110417915A (zh) 一种推送消息传输方法、装置、存储介质及电子设备
CN102891868A (zh) 一种分布式系统的负载均衡方法及装置
CN111209110B (zh) 一种实现负载均衡的任务调度管理方法、系统和存储介质
CN112035276A (zh) 一种基于java的跨平台可扩展的RPC框架设计方法
CN102437933A (zh) 一种服务器故障容错系统及方法
US9846618B2 (en) System and method for supporting flow control in a distributed data grid
CN110399178B (zh) 一种第三方服务的调用方法、装置、电子设备和存储介质
CN113904917A (zh) 一种基于微服务架构的气象数据服务平台
US6504923B1 (en) Intelligent network with distributed service control function
CN103259684A (zh) 互联网业务监控方法和系统
CN104038390A (zh) 一种基于netlink的linux服务器集群统一外设事件监听方法
CN113596176A (zh) 物联网中心节点的自选方法、装置、物联网设备和系统
CN111538612B (zh) 一种通过服务降级实现主备服务器快速切换方法及系统
CN113326100B (zh) 一种集群管理方法、装置、设备及计算机存储介质
CN113867915A (zh) 任务调度方法、电子设备及存储介质
CN104144065A (zh) 一种网络服务器池系统及其构建网络服务器池的池化器
CN103731460A (zh) 一种构建网络服务器池的池化器
CN114390059A (zh) 一种业务处理系统及业务处理方法
CN105634975B (zh) 一种短波通信网的负荷分担方法
CN102158361A (zh) 一种分布式企业服务总线中介流程可靠性维护设备及方法
CN118138629A (zh) 一种跨注册中心的路由调度方法、系统、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant