CN114185717A - 微服务异常处理方法、装置、设备、介质和程序产品 - Google Patents

微服务异常处理方法、装置、设备、介质和程序产品 Download PDF

Info

Publication number
CN114185717A
CN114185717A CN202111539032.5A CN202111539032A CN114185717A CN 114185717 A CN114185717 A CN 114185717A CN 202111539032 A CN202111539032 A CN 202111539032A CN 114185717 A CN114185717 A CN 114185717A
Authority
CN
China
Prior art keywords
information
micro
registration
node
state
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.)
Pending
Application number
CN202111539032.5A
Other languages
English (en)
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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202111539032.5A priority Critical patent/CN114185717A/zh
Publication of CN114185717A publication Critical patent/CN114185717A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种应用于注册中心的微服务异常处理方法、装置、设备、介质和程序产品,该方法包括:监听M个微服务的状态,其中,所述M个微服务由N个节点注册至所述注册中心;在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点,所述运行信息包括所述异常状态的信息。所述第一节点被配置为:在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。本公开还提供了一种应用于第一节点的微服务异常处理方法、装置、设备、介质和程序产品。

Description

微服务异常处理方法、装置、设备、介质和程序产品
技术领域
本公开涉及微服务领域,更具体地涉及一种微服务异常处理方法、装置、设备、介质和程序产品。
背景技术
微服务架构指将某一复杂大应用拆分成一组小的微服务,各微服务之间协调配合通信。每个微服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等环境。
通常在微服务运行过程中,可能会出现异常情况。在某个微服务出现异常时,该微服务所属的应用无法正常提供对应的业务。那么需要人工去处理该微服务的异常情况,来让该微服务所属的应用恢复服务。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:需要时刻安排相关人员进行值班,以防止可能会出现异常情况。另外,人工发现异常的时间有所延迟,不能及时进行异常处理。因此,人工处理微服务异常的方式存在浪费人力成本,异常处理效率低的问题。
发明内容
鉴于上述问题,本公开提供了一种自动化处理异常,提高处理效率的微服务异常处理方法、装置、设备、介质和程序产品。
本公开实施例的一个方面提供了一种微服务异常处理方法,应用于注册中心,包括:监听M个微服务的状态,其中,所述M个微服务由N个节点注册至所述注册中心,N和M分别为大于或等于1的整数;在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点,其中,所述运行信息包括所述异常状态的信息,第一节点为所述N个节点中的任一个,所述第一微服务为所述M个微服务中的任一个;其中,所述第一节点被配置为:在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
根据本公开的实施例,所述在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点包括:将所述运行信息发送至消息中间件,以使所述第一节点基于从所述消息中间件获取的第一异常消息,来获得所述异常状态的信息,其中,所述第一异常消息与所述运行信息相对应。
根据本公开的实施例,所述异常状态包括误注册状态,所述监听M个微服务的状态包括监听所述第一微服务的状态,具体包括:获得所述第一微服务的注册信息;在所述注册信息符合注册告警条件的情况下,确定所述第一微服务为所述误注册状态。
根据本公开的实施例,所述注册信息包括注册所述第一微服务的节点信息、所述第一微服务的标识信息、注册次数中的至少一个,所述注册信息符合注册告警条件包括:所述节点服务器信息中存在告警字段;或基于预设告警表,确定所述标识信息与所述节点服务器信息不具有对应关系,其中,所述预设告警表包括所述N个节点中任一节点服务器与至少一个微服务的对应关系;或基于所述预设告警表,确定所述第一微服务的注册次数超过限制次数,其中,所述预设告警表包括所述第一微服务的所述限制次数。
根据本公开的实施例,在所述第一微服务为误注册状态的情况下,所述将第一微服务的运行信息发送至所述消息中间件包括:将所述误注册状态的信息发送至所述消息中间件,以使所述第一节点基于所述误注册状态的信息调用对应的误注册处理脚本进行处理,其中,所述误注册状态的信息包括所述注册信息符合的注册告警条件信息。
根据本公开的实施例,所述异常状态包括下线状态,在所述第一微服务为下线状态的情况下,所述将第一微服务的运行信息发送至所述消息中间件包括:将所述下线状态的信息发送至所述消息中间件,以使所述第一节点基于所述下线状态的信息调用下线处理脚本,来重启所述第一微服务。
本公开实施例的另一方法提供了一种微服务异常处理方法,应用于第一节点,所述第一节点为N个节点中的任一个,所述N个节点用于注册M个微服务至注册中心服务器,所述方法包括:从所述注册中心获得第一微服务的运行信息,其中,所述第一微服务为所述M个微服务中的任一个,所述注册中心被配置为:监听所述M个微服务的状态,在所述第一微服务为异常状态的情况下,将所述运行信息通知给所述第一节点,所述运行信息包括所述异常状态的信息;在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
根据本公开的实施例,所述从注册中心获得第一微服务的运行信息包括:从消息中间件获取第一异常消息,其中,所述第一异常消息与所述运行信息相对应;所述注册中心被配置为:在所述第一微服务为异常状态的情况下,将所述运行信息发送至所述消息中间件。
根据本公开的实施例,所述异常状态包括误注册状态,所述基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务包括:基于所述误注册状态的信息,确定所述误注册状态的类型,其中,所述误注册状态的类型包括节点类误注册和微服务类误注册中至少一个;基于所述误注册状态的类型,调用对应的误注册处理脚本进行处理。
根据本公开的实施例,所述基于所述误注册状态的类型,调用对应的误注册处理脚本进行处理包括:在所述误注册状态的类型为节点类误注册的情况下,调用对应的节点误注册处理脚本,以从所述注册中心中下线所述第一节点;或在所述误注册状态的类型为微服务类误注册的情况下,调用对应的微服务误注册处理脚本,以关闭所述第一微服务。
根据本公开的实施例,所述异常状态包括下线状态,基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务包括:基于所述下线状态的信息,调用下线处理脚本,来重启所述第一微服务。
本公开实施例的另一方面提供了一种应用于注册中心的微服务异常处理装置,包括:状态监听模块,用于监听M个微服务的状态,其中,所述M个微服务由N个节点注册至所述注册中心,N和M分别为大于或等于1的整数;信息通知模块,用于在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点,其中,所述运行信息包括所述异常状态的信息,第一节点为所述N个节点中的任一个,所述第一微服务为所述M个微服务中的任一个;其中,所述第一节点被配置为:在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
本公开实施例的另一方面提供了一种应用于第一节点的微服务异常处理装置,所述第一节点为N个节点中的任一个,所述N个节点用于注册M个微服务至注册中心服务器,该装置包括:第一获得模块,用于从所述注册中心获得第一微服务的运行信息,其中,所述第一微服务为所述M个微服务中的任一个,所述注册中心被配置为:监听所述M个微服务的状态,在所述第一微服务为异常状态的情况下,将所述运行信息通知给所述第一节点,所述运行信息包括所述异常状态的信息;第二获得模块,用于在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;异常处理模块,用于基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
本公开实施例的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
本公开实施例的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
上述一个或多个实施例具有如下有益效果:通过注册中心监听M个微服务的状态,可以及时确定异常状态的第一微服务,从而将第一微服务的运行信息通知给第一节点,以使第一节点确定第一微服务是否是运行在本地中,若是,则及时调用对应的异常处理脚本进行处理。从而在无需人工干预的前提下进行智能的异常诊断和异常恢复,令项目稳定运行,提高了产品的高可用性,增强了用户体验,避免了浪费人力成本,提高了微服务异常处理效率。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的微服务异常处理方法的应用场景图;
图2示意性示出了根据本公开实施例的应用于注册中心的微服务异常处理方法的流程图;
图3示意性示出了根据本公开实施例的监听第一微服务的状态的流程图;
图4示意性示出了根据本公开实施例的应用于第一节点的微服务异常处理方法的流程图;
图5示意性示出了根据本公开实施例的处理所述第一微服务的流程图;
图6示意性示出了根据本公开实施例的微服务异常处理方法的流程图;
图7示意性示出了根据本公开实施例的应用于注册中心的微服务异常处理装置的结构框图;
图8示意性示出了根据本公开实施例的应用于第一节点的微服务异常处理装置的结构框图;
图9示意性示出了根据本公开实施例的适于实现微服务异常处理方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
图1示意性示出了根据本公开实施例的微服务异常处理方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括N个节点服务器111、112、113……11N,注册中心服务器120,消息服务器130,终端设备151、152、153,网络140。网络140用以在终端设备151、152、153和N个节点服务器中任一服务器之间提供通信链路的介质。网络140可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。需要说明的是在N个节点服务器、注册中心服务器120和消息服务器130两两之间也可以设置网络140,本公开不进行限定。
用户可以使用终端设备151、152、153通过网络140与N个节点服务器中任一服务器交互,以接收或发送消息等。终端设备151、152、153上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。需要说明的是,用户可以使用终端设备151、152、153与注册中心服务器120和消息服务器130交互,本公开不进行具体限定。
终端设备151、152、153可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
N个节点服务器、注册中心服务器120和消息服务器130可以是相同或不相同的服务器,在为相同的服务器时,皆可以是提供各种服务的服务器,例如对用户利用终端设备151、152、153所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
根据本公开的实施例,N个节点服务器中每个节点服务器可以为一个节点。每个节点服务器中可以部署有同一个应用的相同的微服务,以提高应用的冗余性。也可以部署有不同应用的不同微服务,各个节点服务器之间可以互相调用所需的微服务。注册中心服务器120可以部署有微服务框架中的注册中心,N个节点服务器分别为注册在注册中心中的N个节点服务器,每个节点服务器中可以安装有对应于注册中心的客户端。消息服务器130中部署有消息中间件提供消息队列的功能。在另一些实施例中,消息中间件可以部署在注册中心服务器120中,而取消消息服务器130。其中,微服务框架例如可以是Spring Cloud框架,其注册中心可以为Eureka,还可以是Dubbo框架,注册中心可以为Zookeeper。应知的是,微服务框架还可以为其他可以实现监听微服务状态的框架,本公开不进行限定。消息服务器130可以使用Redis或Kafka等实现消息中间件的功能。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图6对本公开实施例的微服务异常处理方法进行详细描述。
图2示意性示出了根据本公开实施例的应用于注册中心的微服务异常处理方法的流程图。
如图2所示,该实施例的微服务异常处理方法应用于注册中心,可以包括操作S210~操作S220。
在操作S210,监听M个微服务的状态,其中,M个微服务由N个节点注册至注册中心,N和M分别为大于或等于1的整数。
以Eureka为例,其可以包括Eureka-server组件和Eureka-client组件。在N个节点中每个节点可以通过本地安装的Eureka-client(安装在节点服务器)向Eureka-server(安装在注册中心服务器)注册运行的微服务。并可以通过Eureka-server中的相关事件来实现微服务状态监听功能,例如注册(EurekaInstanceRegisteredEvent)、下线(EurekaInstance CanceledEvent)、续约(EurekaInstanceRenewedEvent)事件等。
在操作S220,在第一微服务为异常状态的情况下,将第一微服务的运行信息通知给第一节点,其中,运行信息包括异常状态的信息,第一节点为N个节点中的任一个,第一微服务为M个微服务中的任一个。
其中,第一节点被配置为:在确定第一微服务由第一节点注册的情况下,获得异常状态的信息。基于异常状态的信息,调用对应的异常处理脚本处理第一微服务。
第一微服务的运行信息可以包括第一微服务所属的应用名称(App name)、注册第一微服务的节点服务器的IP地址、第一微服务的标识信息(如名字或线程ID)、异常状态的信息等,其中,异常状态的信息可以包括具体的异常状态或异常表现等信息。
在一些实施例中,操作S220中将第一微服务的运行信息通知给第一节点可以包括基于观察者模式通知。第一节点可以订阅监听其注册的微服务的状态。在状态改变时,第一节点可以接到通知。
在一些实施例中,操作S220中将第一微服务的运行信息通知给第一节点可以包括基于事件模式通知。第一节点可以订阅监听相关事件(如下线事件)。例如因其注册的微服务的状态变化产生一些事件,将这些事件通知给第一节点。
在一些实施例中,操作S220中将第一微服务的运行信息通知给第一节点包括:将运行信息发送至消息中间件,以使第一节点基于从消息中间件获取的第一异常消息,来获得异常状态的信息,其中,第一异常消息与运行信息相对应。消息中间件在接收到运行信息后,可以对应的生成第一异常消息放入消息队列中。
从消息中间件获得异常消息的一种可选的方式是,基于消息中间件中的消息队列,将每条异常消息推送至对应的节点服务器。例如根据第一微服务的节点服务器的IP地址,将异常消息推送至对应的节点服务器。然后,该节点服务器从异常消息中确定应用名称,以及标识信息,用于定位到第一微服务。最后,基于异常状态的信息调用对应的脚本进行处理。
从消息中间件获得异常消息的另一种可选的方式是,N个节点中每个节点从消息队列中取异常消息,其中,可以是定时取,也可以是监听到消息队列中有新增消息时就去获取。例如第一节点在获得第一异常消息后,判断其中的IP地址是否是自身地址,若是,则基于应用名称以及标识信息,定位到第一微服务,且基于异常状态的信息调用对应的脚本进行处理。最后将第一异常消息从消息队列中删除。若否,那么第一异常消息继续保留在消息队列,等待其他节点服务器消费。
根据本公开的实施例,将消息中间件作为注册中心与节点之间的衔接,及时通知异常消息。消息队列的方式能够起到异步处理、流量削锋的作用,并且由N个节点从消息队列中拉取消息的方式,可以让N个节点对每个消息进行消费,不会出现对于本地异常丢失处理的情况。
根据本公开的实施例,通过注册中心服务器监听M个微服务的状态,可以及时确定异常状态的第一微服务,从而将第一微服务的运行信息通知给第一节点,以使第一节点确定第一微服务是否是运行在本地中,若是,则及时调用对应的异常处理脚本进行处理。从而在无需人工干预的前提下进行智能的异常诊断和异常恢复,令项目稳定运行,提高了产品的高可用性,增强了用户体验,避免了浪费人力成本,提高了微服务异常处理效率。
图3示意性示出了根据本公开实施例的监听第一微服务的状态的流程图。
如图3所示,操作S210中监听M个微服务的状态包括监听第一微服务的状态,可以包括操作S310~操作S320。其中,异常状态包括误注册状态。
在操作S310,获得第一微服务的注册信息。
例如在第一微服务注册到Eureka-server时,可监听第一微服务的注册(EurekaInstanceRegisteredEvent)事件,则从注册事件中可以获得第一微服务的注册信息。
在操作S320,在注册信息符合注册告警条件的情况下,确定第一微服务为误注册状态。
根据本公开的实施例,通过对误注册状态的监听,可以及时处理误注册的节点或微服务,避免对测试或生产环境造成不利影响。
根据本公开的实施例,注册信息包括注册第一微服务的节点信息(如服务器IP地址)、第一微服务的标识信息、注册次数中的至少一个。
一种可选的实施方式是,操作S320中注册信息符合注册告警条件包括节点服务器信息中存在告警字段。例如节点服务器信息包括IP地址,若IP地址中出现Localhost字段,则表示这个节点是本地开发人员误注册的,而不是正常上线的节点(仅为示例)。因此,可以针对不同的情况设置一个或多个告警字段作为注册告警条件A,及时检测注册信息符合是否注册告警条件。
另一种可选的实施方式是,操作S320中注册信息符合注册告警条件包括基于预设告警表,确定标识信息与节点服务器信息不具有对应关系,其中,预设告警表包括N个节点中任一节点服务器与至少一个微服务的对应关系。例如在预设告警表写入IP地址和标识信息,且将每个节点服务器的IP地址与至少一个微服务的标识信息进行对应,用于表示每个IP地址允许运行的微服务。注册告警条件B可以是,若标识信息或IP地址没有在预设告警表中,则认为其不具有对应关系。注册告警条件B也可以是,虽然标识信息和IP地址皆在预设告警表中,但是两者并不对应,明显也不具有对应关系。
再一种可选的实施方式是,操作S320中注册信息符合注册告警条件包括基于预设告警表,确定第一微服务的注册次数超过限制次数,其中,预设告警表包括第一微服务的限制次数。限制次数例如是单位时间内的最大注册次数。注册告警条件C可以是,第一微服务在单位时间内的注册次数超过最大注册次数。其中,符合注册告警条件C则说明第一微服务频繁注册,可能无法正常运行,认定为误注册。
根据本公开的实施例,在第一微服务为误注册状态的情况下,将第一微服务的运行信息发送至消息中间件包括:将误注册状态的信息发送至消息中间件,以使第一节点基于误注册状态的信息调用对应的误注册处理脚本进行处理,其中,误注册状态的信息包括注册信息符合的注册告警条件信息。误注册状态的信息中可以包括上述注册告警条件A、B或C中的任一个。
根据本公开的实施例,异常状态包括下线状态,在第一微服务为下线状态的情况下,将第一微服务的运行信息发送至消息中间件包括:将下线状态的信息发送至消息中间件,以使第一节点基于下线状态的信息调用下线处理脚本,来重启第一微服务。
例如在某个应用提供服务的过程中调用第一微服务失败,认为其宕机,可以通知注册中心,将第一微服务的状态置为下线状态,并将运行消息发送。再例如第一微服务注册到Eureka-server后,可以通过Eureka-client定期发送心跳消息。若Eureka-server在一定时间内没有收到心跳消息,则将第一微服务的状态置为下线状态,并生成下线事件。因此,可以从下线事件中获取到运行消息并发送。
图4示意性示出了根据本公开实施例的应用于第一节点的微服务异常处理方法的流程图。
如图4所示,该实施例的微服务异常处理方法包括操作S410~操作S430。其中,第一节点为N个节点中的任一个,N个节点注册M个微服务至注册中心服务器。
在操作S410,从注册中心获得第一微服务的运行信息,其中,第一微服务为M个微服务中的任一个,注册中心被配置为:监听M个微服务的状态,在第一微服务为异常状态的情况下,将运行信息通知给第一节点,运行信息包括异常状态的信息。
在操作S420,在确定第一微服务由第一节点注册的情况下,获得异常状态的信息。
在操作S430,基于异常状态的信息,调用对应的异常处理脚本处理第一微服务。
相比于通过人工来手动处理微服务异常的方式,第一节点可以响应于第一异常信息,若确定第一微服务是注册在本地的,则调用异常处理脚本自动进行处理,从而实现了微服务异常的自动化处理,提高了异常处理效率,节省了人力成本。
根据本公开的实施例,操作S410中从注册中心获得第一微服务的运行信息包括:从消息中间件获取第一异常消息,其中,第一异常消息与运行信息相对应。其中,注册中心被配置为:在第一微服务为异常状态的情况下,将运行信息发送至消息中间件。
图5示意性示出了根据本公开实施例的处理第一微服务的流程图。
如图5所示,操作S430中基于异常状态的信息,调用对应的异常处理脚本处理第一微服务可以包括操作S510~操作S520。其中,异常状态包括误注册状态。
在操作S510,基于误注册状态的信息,确定误注册状态的类型,其中,误注册状态的类型包括节点类误注册和微服务类误注册中至少一个。
节点类误注册可以是开发人员本地错误注册的一个节点,例如是将注册中心服务器作为一个节点服务器注册在Eureka-server中,可能会影响微服务管理,甚至导致调用错误。
节点类误注册还可以是未在注册中心服务器对接范围内的节点服务器注册进来,如N个节点之外的其他服务器。同样可能会影响微服务管理,增添注册中心服务器的负担,导致调用错误。
微服务类误注册可以是N个节点将不在计划内的微服务进行注册。例如N个节点运行的应用种类,以及每个应用中的微服务是计划好的内容。预设告警表可以包括计划内的微服务的标识信息,若出现多余的微服务不在计划内,会增加异常出现的可能性。
微服务类误注册还可以是每个节点服务器注册不在计划内的微服务。例如预设告警表可以包括N个节点中任一节点服务器与至少一个微服务的对应关系。若第一节点注册的微服务,不属于与其对应的微服务,则第一节点注册了不在计划内的微服务。
根据本公开的实施例,对应于上述节点类误注册或微服务类误注册的具体类型,可以针对性的设置对应的异常处理脚本,及时解决问题。
在操作S520,基于误注册状态的类型,调用对应的误注册处理脚本进行处理。
根据本公开的实施例,第一异常消息中包括注册信息符合的注册告警条件,例如若包括注册告警条件A,则表明为节点类误注册。若包括注册告警条件B为IP地址不在预设告警表中,则表明为节点类误注册。若包括注册告警条件B为微服务的标识信息不在预设告警表中,或标识信息与IP地址在预设告警表中不对应,则表明为微服务类误注册。若包括注册告警条件C,则表明为微服务类误注册。
在一些实施例中,操作S520中基于误注册状态的类型,调用对应的误注册处理脚本进行处理包括:在误注册状态的类型为节点类误注册的情况下,调用对应的节点误注册处理脚本,以从注册中心中下线第一节点。
在另一些实施例中,在误注册状态的类型为微服务类误注册的情况下,调用对应的微服务误注册处理脚本,以关闭第一微服务。
在第一节点中可以预先设置一个或多个误注册处理脚本,以及每个误注册处理脚本与处理误注册状态的对应关系。例如第一节点确定误注册状态的类型后,则可以基于对应关系调用对应的脚本。
根据本公开的实施例,操作S430中异常状态包括下线状态,基于异常状态的信息,调用对应的异常处理脚本处理第一微服务包括:基于下线状态的信息,调用下线处理脚本,来重启第一微服务。
在注册中心服务器检测到第一微服务为下线状态后,则通过消息中间件通知给第一节点。从而第一节点可以自动重启第一微服务,令第一微服务可以继续正常运行,提高了微服务异常的处理效率。
图6示意性示出了根据本公开实施例的微服务异常处理方法的流程图。
参照图1和图6,该实施例的微服务异常处理方法包括操作S601~操作S606。其中,消息中间件由消息服务器提供。
在操作S601,N个节点服务器中每个节点服务器将运行的微服务向注册中心服务器进行注册。
在操作S602,注册中心服务器通过监听事件的方式,监听微服务的状态。
在操作S603,在某个微服务为异常状态(如下线状态、误注册状态)的情况下,将该微服务的运行信息存入消息中间件。该微服务的运行信息可以包括节点服务器的信息(如IP地址)、应用名称、微服务的标识信息(如微服务名称或线程ID)。
在操作S604,每个节点服务器可以定时向消息中间件访问,采用拉取消息的方式从消息队列获取每条异常消息。
在操作S605,消息中间件将每条异常消息返回给每个节点服务器。
在操作S606,每个节点服务器对获得的异常消息进行解析,获取运行信息。若确定该异常消息中的微服务是运行在本地的,则将该异常消息从消息队列删除,说明消费成功。若确定该异常消息中的微服务不是运行在本地的,则不将其删除,说明消费失败。该异常消息等待其他节点服务器消费成功。
另外,在操作S606还可以获取异常状态的信息,确定是下线状态还是误注册状态,若是下线状态则调用下线处理脚本进行重启。若是误注册状态,则基于节点类误注册还是微服务类误注册调用对应的脚本进行处理。可以参照上述操作S510~操作S520的实施例,在此不做赘述。
根据本公开的实施例,以利用redis服务器实现消息中间件功能为例,对微服务的诸如宕机异常、误注册异常,可以获取到异常的微服务对应的appName,并存储到Redis中。同时在相应的节点上,读取redis中存储的key(如IP地址或appName),如果能读到则表明有异常微服务,则重启。
在一些实施例中,在处理微服务的异常状态之后,节点服务器还可以执行邮件通知脚本和短信通知脚本,通知相关人员。例如可以将异常处理日志转发至邮件服务器和短信服务器,由邮件服务器和短信服务器生成邮件和短信进行转发。
基于上述微服务异常处理方法,本公开还提供了一种应用于注册中心的微服务异常处理装置,以及应用于第一节点的微服务异常处理装置。以下将结合图7和图8对该装置进行详细描述。
图7示意性示出了根据本公开实施例的应用于注册中心的微服务异常处理装置700的结构框图。
如图7所示,该实施例的应用于注册中心的微服务异常处理装置700包括状态监听模块710和信息通知模块720。
状态监听模块710可以执行操作S210,用于监听M个微服务的状态,其中,M个微服务由N个节点注册至注册中心,N和M分别为大于或等于1的整数。
信息通知模块710可以执行操作S220,用于在第一微服务为异常状态的情况下,将第一微服务的运行信息通知给第一节点,其中,运行信息包括异常状态的信息,第一节点为N个节点中的任一个,第一微服务为M个微服务中的任一个。其中,第一节点被配置为:在确定第一微服务由第一节点注册的情况下,获得异常状态的信息。基于异常状态的信息,调用对应的异常处理脚本处理第一微服务。
图8示意性示出了根据本公开实施例的应用于第一节点的微服务异常处理装置800的结构框图。
如图8所示,该实施例的应用于第一节点的微服务异常处理装置800包括第一获得模块810、第二获得模块820和异常处理模块830。其中,第一节点为N个节点中的任一个,N个节点用于注册M个微服务至注册中心服务器。
第一获得模块810例如可以执行操作S410,用于从注册中心获得第一微服务的运行信息,其中,第一微服务为M个微服务中的任一个,注册中心被配置为:监听M个微服务的状态,在第一微服务为异常状态的情况下,将运行信息通知给第一节点,运行信息包括异常状态的信息。
第二获得模块820例如可以执行操作S420,用于在确定第一微服务由第一节点注册的情况下,获得异常状态的信息。
异常处理模块830例如可以执行操作S430,用于基于异常状态的信息,调用对应的异常处理脚本处理第一微服务。
根据本公开的实施例,微服务异常处理装置700或微服务异常处理装置800中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。
根据本公开的实施例,微服务异常处理装置700或微服务异常处理装置800中的至少一个模块可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,微服务异常处理装置700或微服务异常处理装置800中的至少一个模块可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图9示意性示出了根据本公开实施例的适于实现微服务异常处理方法的电子设备的方框图。
如图9所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。电子设备900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906。包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907。包括硬盘等的存储部分908。以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的。也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机***中运行时,该程序代码用于使计算机***实现本公开实施例所提供的物品推荐方法。
在该计算机程序被处理器901执行时执行本公开实施例的***/装置中限定的上述功能。根据本公开的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (16)

1.一种微服务异常处理方法,应用于注册中心,包括:
监听M个微服务的状态,其中,所述M个微服务由N个节点注册至所述注册中心,N和M分别为大于或等于1的整数;
在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点,其中,所述运行信息包括所述异常状态的信息,所述第一节点为所述N个节点中的任一个,所述第一微服务为所述M个微服务中的任一个;
其中,所述第一节点被配置为:
在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;
基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
2.根据权利要求1所述的方法,其中,所述在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点包括:
将所述运行信息发送至消息中间件,以使所述第一节点基于从所述消息中间件获取的第一异常消息,来获得所述异常状态的信息,其中,所述第一异常消息与所述运行信息相对应。
3.根据权利要求2所述的方法,其中,所述异常状态包括误注册状态,所述监听M个微服务的状态包括监听所述第一微服务的状态,具体包括:
获得所述第一微服务的注册信息;
在所述注册信息符合注册告警条件的情况下,确定所述第一微服务为所述误注册状态。
4.根据权利要求3所述的方法,其中,所述注册信息包括注册所述第一微服务的节点信息、所述第一微服务的标识信息、注册次数中的至少一个,所述注册信息符合注册告警条件包括:
所述节点服务器信息中存在告警字段;或
基于预设告警表,确定所述标识信息与所述节点服务器信息不具有对应关系,其中,所述预设告警表包括所述N个节点中任一节点服务器与至少一个微服务的对应关系;或
基于所述预设告警表,确定所述第一微服务的注册次数超过限制次数,其中,所述预设告警表包括所述第一微服务的所述限制次数。
5.根据权利要求4所述的方法,其中,在所述第一微服务为误注册状态的情况下,所述将第一微服务的运行信息发送至所述消息中间件包括:
将所述误注册状态的信息发送至所述消息中间件,以使所述第一节点基于所述误注册状态的信息调用对应的误注册处理脚本进行处理,其中,所述误注册状态的信息包括所述注册信息符合的注册告警条件信息。
6.根据权利要求2所述的方法,其中,所述异常状态包括下线状态,在所述第一微服务为下线状态的情况下,所述将第一微服务的运行信息发送至所述消息中间件包括:
将所述下线状态的信息发送至所述消息中间件,以使所述第一节点基于所述下线状态的信息调用下线处理脚本,来重启所述第一微服务。
7.一种微服务异常处理方法,应用于第一节点,所述第一节点为N个节点中的任一个,所述N个节点用于注册M个微服务至注册中心服务器,所述方法包括:
从所述注册中心获得第一微服务的运行信息,其中,所述第一微服务为所述M个微服务中的任一个,所述注册中心被配置为:监听所述M个微服务的状态,在所述第一微服务为异常状态的情况下,将所述运行信息通知给所述第一节点,所述运行信息包括所述异常状态的信息;
在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;
基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
8.根据权利要求7所述的方法,其中,所述从注册中心获得第一微服务的运行信息包括:
从消息中间件获取第一异常消息,其中,所述第一异常消息与所述运行信息相对应;
所述注册中心被配置为:在所述第一微服务为异常状态的情况下,将所述运行信息发送至所述消息中间件。
9.根据权利要求7所述的方法,其中,所述异常状态包括误注册状态,所述基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务包括:
基于所述误注册状态的信息,确定所述误注册状态的类型,其中,所述误注册状态的类型包括节点类误注册和微服务类误注册中至少一个;
基于所述误注册状态的类型,调用对应的误注册处理脚本进行处理。
10.根据权利要求9所述的方法,其中,所述基于所述误注册状态的类型,调用对应的误注册处理脚本进行处理包括:
在所述误注册状态的类型为节点类误注册的情况下,调用对应的节点误注册处理脚本,以从所述注册中心中下线所述第一节点;或
在所述误注册状态的类型为微服务类误注册的情况下,调用对应的微服务误注册处理脚本,以关闭所述第一微服务。
11.根据权利要求7所述的方法,其中,所述异常状态包括下线状态,基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务包括:
基于所述下线状态的信息,调用下线处理脚本,来重启所述第一微服务。
12.一种微服务异常处理装置,应用于注册中心,包括:
状态监听模块,用于监听M个微服务的状态,其中,所述M个微服务由N个节点注册至所述注册中心,N和M分别为大于或等于1的整数;
信息通知模块,用于在第一微服务为异常状态的情况下,将所述第一微服务的运行信息通知给第一节点,其中,所述运行信息包括所述异常状态的信息,第一节点为所述N个节点中的任一个,所述第一微服务为所述M个微服务中的任一个;
其中,所述第一节点被配置为:
在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;
基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
13.一种微服务异常处理装置,应用于第一节点,所述第一节点为N个节点中的任一个,所述N个节点用于注册M个微服务至注册中心服务器,所述装置包括:
第一获得模块,用于从所述注册中心获得第一微服务的运行信息,其中,所述第一微服务为所述M个微服务中的任一个,所述注册中心被配置为:监听所述M个微服务的状态,在所述第一微服务为异常状态的情况下,将所述运行信息通知给所述第一节点,所述运行信息包括所述异常状态的信息;
第二获得模块,用于在确定所述第一微服务由所述第一节点注册的情况下,获得所述异常状态的信息;
异常处理模块,用于基于所述异常状态的信息,调用对应的异常处理脚本处理所述第一微服务。
14.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~11中任一项所述的方法。
15.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~11中任一项所述的方法。
16.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~11中任一项所述的方法。
CN202111539032.5A 2021-12-15 2021-12-15 微服务异常处理方法、装置、设备、介质和程序产品 Pending CN114185717A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111539032.5A CN114185717A (zh) 2021-12-15 2021-12-15 微服务异常处理方法、装置、设备、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111539032.5A CN114185717A (zh) 2021-12-15 2021-12-15 微服务异常处理方法、装置、设备、介质和程序产品

Publications (1)

Publication Number Publication Date
CN114185717A true CN114185717A (zh) 2022-03-15

Family

ID=80605223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111539032.5A Pending CN114185717A (zh) 2021-12-15 2021-12-15 微服务异常处理方法、装置、设备、介质和程序产品

Country Status (1)

Country Link
CN (1) CN114185717A (zh)

Similar Documents

Publication Publication Date Title
CN107016480B (zh) 任务调度方法、装置及***
CN111694674B (zh) 消息分发处理方法、装置、设备及存储介质
US11061669B2 (en) Software development tool integration and monitoring
CN113900834B (zh) 基于物联网技术的数据处理方法、装置、设备及存储介质
CN107896172B (zh) 监听故障处理方法及装置、存储介质和电子设备
CN111526049B (zh) 运维***、运维方法、电子设备和存储介质
US9092329B2 (en) Process integration alerting for business process management
CN113377626B (zh) 基于服务树的可视化统一报警方法、装置、设备和介质
US9026839B2 (en) Client based high availability method for message delivery
CN110896362B (zh) 一种故障检测方法和装置
CN112953769B (zh) 数据传输方法、装置、计算机***及可读存储介质
CN111240760B (zh) 基于注册中心的应用发布方法、***、存储介质及设备
CN115951923B (zh) 订阅事件管理方法、显示***、设备和存储介质
CN112202605A (zh) 服务配置方法、装置、设备及存储介质
CN114968636A (zh) 一种故障处理的方法和装置
CN114185717A (zh) 微服务异常处理方法、装置、设备、介质和程序产品
CN110875832A (zh) 异常业务监控方法、装置、***及计算机可读存储介质
CN111290873B (zh) 故障处理方法和装置
CN112783730B (zh) 一种接口的监测方法、装置、介质及电子设备
CN114257632A (zh) 断线重连的方法、装置、电子设备及可读存储介质
US20100269052A1 (en) Notifying of an unscheduled system interruption requiring manual intervention and adjusting interruption specifics reactive to user feedback
CN113656239A (zh) 针对中间件的监控方法、装置及计算机程序产品
CN112445597A (zh) 定时任务调度方法和装置
US9336138B2 (en) Method and apparatus for implementing garbage collection within a computing environment
CN114244693A (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