CN112799786A - 微服务实例的退出方法、装置、设备及存储介质 - Google Patents

微服务实例的退出方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112799786A
CN112799786A CN202110146061.9A CN202110146061A CN112799786A CN 112799786 A CN112799786 A CN 112799786A CN 202110146061 A CN202110146061 A CN 202110146061A CN 112799786 A CN112799786 A CN 112799786A
Authority
CN
China
Prior art keywords
service
micro
instance
business process
request
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
CN202110146061.9A
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.)
Weimin Insurance Agency Co Ltd
Original Assignee
Weimin Insurance Agency 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 Weimin Insurance Agency Co Ltd filed Critical Weimin Insurance Agency Co Ltd
Priority to CN202110146061.9A priority Critical patent/CN112799786A/zh
Publication of CN112799786A publication Critical patent/CN112799786A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/546Message passing systems or structures, e.g. queues
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请实施例公开了微服务实例的退出方法、装置、设备及存储介质。其中,微服务实例运行在微服务架构中,微服务实例包括业务进程和基础框架进程,所述方法包括:基础框架进程在接收到微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;所述基础框架进程关闭所述基础框架进程的微服务监听端口,微服务监听端口用于接收来自服务调用方的业务请求;并在微服务实例中当前的业务请求处理完成之后关闭与发送业务请求的目标服务调用方之间的连接;业务进程在接收到微服务实例的退出指令时,关闭业务进程的业务功能。采用本申请实施例可确保微服务实例能够优雅地退出,提高已上线的微服务实例的可用性和稳定性。

Description

微服务实例的退出方法、装置、设备及存储介质
技术领域
本申请涉及计算机应用技术领域,尤其涉及微服务实例的退出方法、装置、设备及存储介质。
背景技术
微服务架构是一项在云中部署应用和服务的新技术,旨在将一个复杂***分解为一组微服务,每个微服务关注于一个业务功能。微服务实例通过进程提供微服务能力,例如负责业务处理流程,或者负责微服务的核心功能,核心功能如服务发现、服务注册、负载均衡、流量管理等。对于微服务实例而言,微服务更新升级过程中,微服务实例的退出流程很重要,不够优雅地退出流程会导致业务请求报错,从而影响服务的可用性和稳定性。
发明内容
本发明实施例提供微服务实例的退出方法、装置、设备以及存储介质,可确保微服务实例能够优雅地退出,提高已上线的微服务实例的可用性和稳定性。
本发明实施例提供了一种微服务实例的退出方法,所述微服务实例运行在微服务架构中,所述微服务实例包括业务进程和基础框架进程,所述方法包括:
所述基础框架进程在接收到所述微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;
所述基础框架进程关闭所述基础框架进程的微服务监听端口,所述微服务监听端口用于接收来自服务调用方的业务请求,并在所述微服务实例中当前的业务请求处理完成之后关闭与发送所述业务请求的目标服务调用方之间的连接;
所述业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能。
相应的,本申请实施例提供一种微服务实例的退出装置,该装置具有实现上述的微服务实例的退出的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种实现方式中,所述微服务实例运行在微服务架构中,所述微服务实例包括业务进程和基础框架进程,所述装置包括:
删除单元,用于在所述基础框架进程接收到所述微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;
关闭单元,用于通过所述基础框架进程关闭所述基础框架进程的微服务监听端口,所述微服务监听端口用于接收来自服务调用方的业务请求,并在所述微服务实例中当前的业务请求处理完成之后通过所述基础框架进程关闭与发送所述业务请求的目标服务调用方之间的连接;
所述关闭单元,还用于在所述业务进程接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能。
相应的,本申请实施例提供一种服务设备,所述服务设备为微服务架构中的一个节点设备,所述服务设备中运行有微服务实例,所述微服务实例包括业务进程和基础框架进程,所述服务设备包括处理器,所述处理器与存储器耦合,其中:
所述存储器,用于存储计算机程序;
所述处理器,用于调用所述计算机程序,使得所述服务设备执行如上所述的微服务实例的退出方法。
相应的,本申请实施例提供一种计算机可读取存储介质,所述计算机可读取存储介质中存储计算机程序,所述计算机程序被处理器执行,用于实现如上所述的微服务实例的退出方法。
通过本申请实施例,基础框架进程在接收到微服务实例的退出指令时,从服务注册列表中删除微服务实例的服务注册信息,然后基础框架进程关闭基础框架进程的微服务监听端口,并在当前的业务请求处理完成之后关闭与发送业务请求的目标服务调用方之间的连接,且业务进程在接收到微服务实例的退出指令时,关闭业务进程的业务功能,可确保微服务实例能够优雅地退出,提高已上线的微服务实例的可用性和稳定性。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例中所需要使用的附图进行说明。
图1为本发明实施例提供的一种微服务架构的架构示意图;
图2为本发明实施例提供的一种微服务实例的示意图;
图3为本发明实施例提供的另一种微服务架构的架构示意图;
图4为本发明实施例提供的一种消息队列中消息处理流程的优雅退出的示意图;
图5为本发明实施例提供的一种微服务实例的退出方法的流程示意图;
图6为本发明实施例提供的另一种微服务实例的退出方法的流程示意图;
图7为本发明实施例提供的一种微服务实例的退出装置的结构示意图;
图8为本发明实施例提供的一种服务设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
本发明实施例提供的微服务实例的退出方法应用于多进程微服务场景中,多进程微服务属于微服务架构的一种基于多进程部署的场景,单个微服务实例通过两个独立的进程(即业务进程和基础框架进程)共同提供微服务能力。
请参见图1,图1是本发明实施例提供的一种微服务架构的架构示意图。如图1所示,微服务架构运行有至少一个微服务实例,每个微服务实例包括业务进程和基础框架进程,该微服务实例通过业务进程和基础框架进程共同提供微服务能力。其中,业务进程负责业务逻辑处理,即负责业务处理流程,例如消息队列处理、分布式唯一序列号查询等。基础框架进程负责微服务的核心功能,核心功能如服务发现、服务注册、负载均衡、流量管理等。
在该实施例中,服务提供方(即提供微服务能力的一方)在接收到微服务实例下线命令之后,可以通过Kubernetes平台向微服务实例下线命令携带的实例标识所对应微服务实例中的基础框架进程和业务进程发送退出信号。基础框架进程和业务进程接收到Kubernetes平台发送的退出信号之后,可以各自执行退出流程。其中,基础框架进程可以访问服务注册表删除服务注册信息,服务注册表通知所有的服务调用方(即调用微服务接口的一方)移除微服务实例信息,从而确保不会有新的请求接入服务提供方。业务进程接收到Kubernetes平台发送的退出信号指挥,优雅关闭业务功能,比如优雅关闭消息队列处理流程。其中,服务注册表是联系服务提供者和服务消费者的桥梁,用于维护服务提供者实例的最新网络位置,例如,可以使用一个分布式的、一致性的键值存储***维护服务注册信息。
具体实现中,1、基础框架进程在接收到关于微服务实例的退出指令(例如退出信号)时,从服务注册列表中删除微服务实例的服务注册信息。2、基础框架进程关闭基础框架进程的微服务监听端口,并在当前的业务请求处理完成之后关闭与发送业务请求的目标服务调用方之间的连接。业务进程在接收到微服务实例的退出指令时,关闭业务进程的业务功能。3、服务注册表在删除微服务实例的服务注册信息之后,可以向各个服务调用方发送通知消息,通知消息可以携带该微服务实例的实例标识,通知消息可以用于指示各个服务调用方删除服务调用方存储的微服务实例。4、服务调用方响应通知消息,将服务调用方的存储器中存储的实例标识对应的微服务实例删除,该存储器可以为本地缓存。
本申请实施例中,业务进程和基础框架进程作为一个整体共同提供微服务能力,上述实现方式不仅能够保证服务调用方正常地完成当前的业务请求,而且能够保证服务调用方及时地切换业务请求至其它的微服务实例,实现微服务实例退出流程不影响服务调用方的业务请求,即业务请求零错误,也就是说,通过上述实现方式可确保微服务实例能够优雅地退出,满足微服务实例退出流程的业务请求零错误。上述实现方式中,基础框架进程在接收到微服务实例的退出指令时,从服务注册列表中删除微服务实例的服务注册信息,服务注册表向各个服务调用方发送通知消息,服务调用方响应通知消息,将服务调用方的存储器中存储的实例标识对应的微服务实例删除,可为业务服务的更新升级提供可用性、稳定性保证,并且提高了业务服务的运维效率,降低了开发和运维的投入成本。另外,微服务实例的优雅退出是实现微服务实例自动扩缩容策略的必要条件。
其中,本申请实施例中的服务注册表为自建的服务注册表,即该服务注册表是按需定制开发的,仅提供本申请实施例中微服务架构运行的各个微服务实例所提供的微服务,以及微服务实例的退出相关的功能。其中,基础框架进程位于一个应用程序(Application,APP)中,服务注册表位于另一个APP中,基础框架进程从服务注册列表中删除微服务实例的服务注册信息的方式可以为:基础框架进程通过基础框架进程所在APP的APP接口向服务注册表发送服务注册信息删除请求,服务注册信息删除请求携带微服务实例的实例标识,服务注册列表可以响应服务注册信息删除请求删除实例标识所对应微服务实例的服务注册信息。
以图2所示的微服务实例的示意图为例,微服务实例使用多进程(即业务进程和基础框架进程)的方式,基于Kubernetes平台使用Pod方式进行部署。如图2所示,每个Pod是一个微服务实例,包含业务进程和基础框架进程,分别以两个容器的方式启动。
其中,Kubernetes平台是容器集群管理***,为容器化应用提供部署运行、资源调度、服务发现和弹性伸缩等一系列功能,提高了大规模容器集群管理的便捷性。Kubernetes的最小运行单元是Pod,一个Pod可以包含多个容器,一个容器可以是一个进程。
在该实施例中,业务进程的业务服务代码和基础框架进程的基础框架代码是解耦的,业务服务可以基于不同技术栈进行开发,而实现微服务核心功能的基础框架代码是可以复用的,是一种跨语言微服务架构方案。基础框架进程支持不同技术栈的业务服务接入,共同构建微服务实例,并且保证微服务实例的优雅退出,确保服务更新升级可用性和稳定性的同时,有效地降低了公司基础架构的开发和运维成本。
以图3所示的微服务架构的架构示意图为例,当服务需要更新发布之时,运维人员向服务提供方发送微服务实例下线命令,基础框架进程和业务进程接收到退出信号之后,各自执行退出流程。
在一个实施例中,基础框架进程执行退出流程可以如下所示:
1、基础框架进程访问服务注册表删除服务注册信息。
2、服务注册表通知所有的服务调用方删除微服务实例信息,确保服务调用方及时感知微服务实例下线,从而确保不会有新的业务请求接入服务提供方。
3、服务调用方将本地缓存的微服务实例删除。
其中步骤1至3基于实时推送实现,从基础框架进程提交删除服务注册信息请求,直到服务调用方感知微服务实例下线所需的时间是毫秒级别。为了保证微服务实例的退出流程更加优雅,因此在执行后续步骤之前,基础框架进程可以采用休眠机制,例如休眠时间可以默认设置为5s(秒)或者10s等。
4、基础框架进程关闭端口监听,停止接入连接。
5、基础框架进程确保当前正在处理的业务请求执行完成之后,优雅关闭连接。具体实现过程可以为:服务提供方发送消息给服务调用方,告知服务端停止接收新的业务请求;服务调用方收到消息,检测是否存在未处理完成的业务请求,如果存在,则等待业务请求处理完成,否则,发送连接关闭请求至服务提供方,并且释放本地连接资源;服务提供方收到连接关闭请求,表明当前正在处理的业务请求已经处理完成,从而释放本地连接资源。
在一个实施例中,业务进程在接收到退出信号之后,负责业务功能的优雅退出流程,例如消息队列中消息处理流程的优雅退出。以图4所示的消息队列中消息处理流程的优雅退出的示意图为例,可以使用Go语言实现消息队列中消息处理流程的优雅退出,使用多个Go协程并发消费处理消息队列中的消息,也就是说,多个业务进程在处理消息队列中的消息,每个Go协程执行一个业务进程的消息队列中消息的处理逻辑。
其中,每个Go协程循环执行消息队列中消息的处理逻辑,单个循环流程如下:1、阻塞读取消息队列中的消息,示例性的,默认阻塞时间为30秒。2、判断是否接收到退出信号,如果收到退出信号,直接退出循环。微服务实例退出流程,该步骤可以避免进一步消费处理消息队列中的消息,避免因此导致的大量错误日志。如果没有收到退出信号,且没有需要处理的消息,进入步骤1。3、如果存在需要处理的消息,开始执行消息处理流程。在该实施例中,通过设置阻塞时间,可确保微服务实例的退出流程更加优雅。
上述消息队列中消息处理的优雅退出流程,解决了如下两个问题:一、业务消息的处理流程,并不是所有业务开发者都支持消息重复消费处理的幂等性。二、避免业务进程退出流程,继续消费处理消息队列而产生大量的错误日志,导致业务开发人员疲于排查问题,增加了服务运维工作。
基于图3所示的微服务架构的架构示意图,请参见图5,图5是本发明实施例提供的一种微服务实例的退出方法的流程示意图,该方法包括但不限于如下步骤:
步骤S501:基础框架进程在接收到微服务实例的退出指令时,从服务注册列表中删除微服务实例的服务注册信息。
在一个实施例中,基础框架进程从服务注册列表中删除微服务实例的服务注册信息的方式可以为:基础框架进程向服务注册列表发送服务注册信息删除请求,服务注册信息删除请求携带微服务实例的实例标识,以使服务注册列表删除实例标识所对应微服务实例的服务注册信息,且服务注册列表通知各个服务调用方删除服务调用方存储的微服务实例。
步骤S502:基础框架进程关闭基础框架进程的微服务监听端口,并在当前的业务请求处理完成之后关闭与发送业务请求的目标服务调用方之间的连接。
在一个实施例中,基础框架进程可以接收目标服务调用方发送的连接关闭请求,连接关闭请求是目标服务调用方在检测到目标服务调用方所提交的业务请求均处理完成时发送的,然后基础框架进程可以根据连接关闭请求,确定来自目标服务调用方的业务请求均处理完成,进而基础框架进程关闭与目标服务调用方之间的连接。
其中,目标服务调用方向微服务实例提交业务请求之后,微服务实例中的业务进程和基础框架进程会响应业务请求,并向目标服务调用方返回业务处理结果。因此,目标服务调用方在接收到业务请求对应的业务处理结果之后,目标服务调用方可以确定该业务请求处理完成。那么目标服务调用方检测目标服务调用方所提交的业务请求均处理完成的方式可以为:目标服务调用方接收到目标服务调用方所提交的各个业务请求对应的业务处理结果,则检测到目标服务调用方所提交的业务请求均处理完成。
在一个实施例中,基础框架进程关闭基础框架进程的微服务监听端口之前,可以获取从服务注册列表中删除微服务实例的服务注册信息的删除时间,若从删除时间开始经过预设时长,则关闭基础框架进程的微服务监听端口。预设时长为预先设定的时长,用户可以基于不同场景进行调整,示例性的,预设时长可以为5s。其中,删除时间指的是:服务注册列表删除微服务实例的服务注册信息时所处的***时间。
在该实施例中,从基础框架进程提交删除服务注册信息请求,直到服务调用方感知微服务实例下线所需的时间是毫秒级别。为了保证微服务实例的退出流程更加优雅,在基础框架进程关闭基础框架进程的微服务监听端口之前,基础框架进程可以采用上述休眠机制。
步骤S503:业务进程在接收到微服务实例的退出指令时,关闭业务进程的业务功能。
在一个实施例中,业务进程在接收到所述微服务实例的退出指令时,可以关闭业务进程对消息队列中消息的处理。具体实现中,只有在消息队列中的某个消息处理完成之后,才会将该消息从消息队列中删除。所以对于消息队列中未处理的消息和正在处理的消息,仍然存在于消息队列中,基于此,在接收到微服务实例的退出指令时,即使消息队列中存在未处理的消息或正在处理的消息,业务进程直接关闭业务进程的业务功能,也不会导致消息队列中消息的丢失。因此,业务进程在接收到微服务实例的退出指令时,直接关闭业务进程的业务功能。
在一个实施例中,可以通过业务进程对应的线程判断是否接收到微服务实例的退出指令,若接收到微服务实例的退出指令,则业务进程结束对消息队列中消息的处理。若未接收到微服务实例的退出指令,且消息队列中存在业务进程待处理的待处理消息,则业务进程对待处理消息进行处理。若未接收到微服务实例的退出指令,且消息队列中不存在业务进程待处理的待处理消息,则触发通过业务进程对应的线程判断是否接收到微服务实例的退出指令。
其中,线程可以为GO协程,GO协程为Go语言中的轻量级线程的实现,是运行于用户态的线程,主要应用于异步编程。
在一个实施例中,若发生微服务实例的人为主动重启事件,那么微服务实例所处的服务设备可以通过用户触发的人为主动重启事件生成退出指令,并将该退出指令发送给微服务实例中业务进程对应的线程,进而该线程可以确定接收到微服务实例的退出指令。在另一个实施例中,业务进程本质上为一个容器,若运行该业务进程的基础环境检测到业务进程出现容器满负载,例如容器所存储的数据量达到该容器的存储上限,那么基础环境可以向该业务进程对应的线程发送退出指令,进而该线程可以确定接收到微服务实例的退出指令。
在一个实施例中,可以通过业务进程对应的线程判断是否经过阻塞时长,若经过阻塞时长,则通过业务进程对应的线程判断是否接收到微服务实例的退出指令。在此基础上,若未接收到微服务实例的退出指令,且消息队列中不存在业务进程待处理的待处理消息,则触发通过业务进程对应的线程判断是否接收到微服务实例的退出指令的方式可以为:若未接收到微服务实例的退出指令,且消息队列中不存在业务进程待处理的待处理消息,则获取确定未接收到微服务实例的退出指令,且消息队列中不存在业务进程待处理的待处理消息的确定时间,若从确定时间开始经过阻塞时长,则触发通过业务进程对应的线程判断是否接收到微服务实例的退出指令。
其中,阻塞时长为预先设置的时间段,例如30秒,用户可基于不同场景或者需求对该阻塞时长进行调整,具体不受本申请实施例的限制。
其中,确定时间,即线程在确定未接收到微服务实例的退出指令,且消息队列中不存在业务进程待处理的待处理消息时所处的***时间。
在一个实施例中,微服务架构运行有多个微服务实例,每个微服务实例包括业务进程和基础框架进程,每个业务进程对应一个线程,线程用于判断是否接收到线程对应业务进程所属微服务实例的退出指令。
在本发明实施例中,基础框架进程在接收到微服务实例的退出指令时,从服务注册列表中删除微服务实例的服务注册信息,基础框架进程关闭基础框架进程的微服务监听端口,并在当前的业务请求处理完成之后关闭与发送业务请求的目标服务调用方之间的连接,业务进程在接收到微服务实例的退出指令时,关闭业务进程的业务功能,可确保微服务实例能够优雅地退出,提高已上线的微服务实例的可用性和稳定性。
基于图3所示的微服务架构的架构示意图,请参见图6,图6是本发明实施例提供的一种关闭连接的流程示意图,该方法包括但不限于如下步骤:
步骤S601,服务提供方接收微服务实例下线命令。
当服务需要更新发布之时,运维人员向服务提供方发送微服务实例下线命令。
步骤S602,服务提供方发送消息给服务调用方,告知服务端停止接收新的请求。
步骤S603,服务调用方接收到消息之后,检测是否存在未处理完成的业务请求,如果检测存在未处理完成的业务请求,则等待业务请求处理完成。
步骤S604,服务提供方处理该业务请求。
步骤S605,如果检测不存在未处理完成的业务请求,即该服务调用方发送的所有业务请求均已处理完成,服务调用方发送连接关闭请求至服务提供方。
步骤S606,服务提供方在接收到连接关闭请求之后,释放本地连接资源。
步骤S607,服务调用方释放本地连接资源。
只要检测到服务调用方发送的所有业务请求均已处理完成,该服务调用方就可以释放本地连接资源。本申请实施例并不限定步骤S605与步骤S607的先后执行顺序,例如如果检测不存在未处理完成的业务请求,服务调用方可以发送连接关闭请求至服务提供方,同时释放本地连接资源。
请参见图7,图7是本申请实施例提供的一种微服务实例的退出装置的结构示意图,所述微服务实例运行在微服务架构中,所述微服务实例包括业务进程和基础框架进程,该微服务实例的退出装置用于执行上述实施例中业务进程和基础框架进程所执行的步骤,该微服务实例的退出装置可包括删除单元701以及关闭单元702。
删除单元701,用于在所述基础框架进程接收到所述微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;
关闭单元702,用于通过所述基础框架进程关闭所述基础框架进程的微服务监听端口,所述微服务监听端口用于接收来自服务调用方的业务请求,并在所述微服务实例中当前的业务请求处理完成之后通过所述基础框架进程关闭与发送所述业务请求的目标服务调用方之间的连接;
所述关闭单元702,还用于在所述业务进程接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能。
在一种实现方式中,删除单元701从服务注册列表中删除所述微服务实例的服务注册信息,包括:
通过所述基础框架进程向所述服务注册列表发送服务注册信息删除请求,所述服务注册信息删除请求携带所述微服务实例的实例标识,以使所述服务注册列表删除所述实例标识所对应微服务实例的服务注册信息,且所述服务注册列表通知各个服务调用方删除所述服务调用方存储的所述微服务实例。
在一种实现方式中,所述关闭单元702在当前的业务请求处理完成之后关闭与发送所述业务请求的目标服务调用方之间的连接,包括:
通过所述基础框架进程接收所述目标服务调用方发送的连接关闭请求,所述连接关闭请求是所述目标服务调用方在检测到所述目标服务调用方所提交的业务请求均处理完成时发送的;
通过所述基础框架进程根据所述连接关闭请求,确定来自所述目标服务调用方的业务请求均处理完成;
通过所述基础框架进程关闭与所述目标服务调用方之间的连接。
在一种实现方式中,所述关闭单元702,还用于在通过所述基础框架进程关闭所述基础框架进程的微服务监听端口之前,通过所述基础框架进程获取从所述服务注册列表中删除所述微服务实例的服务注册信息的删除时间;若从所述删除时间开始经过预设时长,则触发通过所述基础框架进程关闭所述基础框架进程的微服务监听端口。
在一种实现方式中,所述关闭单元702通过业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能,包括:
通过所述业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程对消息队列中消息的处理。
在一种实现方式中,所述关闭单元702通过所述业务进程关闭所述业务进程对消息队列中消息的处理,包括:
通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令;
若接收到所述微服务实例的退出指令,则通过所述业务进程结束对所述消息队列中消息的处理;
若未接收到所述微服务实例的退出指令,且所述消息队列中存在所述业务进程待处理的待处理消息,则通过所述业务进程对所述待处理消息进行处理;
若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令。
在一种实现方式中,所述关闭单元702,还用于在通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令之前,判断是否经过阻塞时长;若经过阻塞时长,则触发通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令;
所述关闭单元702若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令,包括:
若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则获取确定未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息的确定时间;
若从所述确定时间开始经过所述阻塞时长,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令。
在一种实现方式中,所述微服务架构运行有多个微服务实例,每个微服务实例包括业务进程和基础框架进程,每个业务进程对应一个线程,所述线程用于判断是否接收到所述线程对应业务进程所属微服务实例的退出指令。
需要说明的是,图7对应的实施例中未提及的内容以及各个模块执行步骤的具体实现方式可参见图5或图6所示实施例以及前述内容,这里不再赘述。
请参见图8,图8是本申请实施例提供的一种服务设备的结构示意图。该服务设备包括处理器801、存储器802、通信接口803,所述处理器801、所述存储器802、所述通信接口803通过一条或多条通信总线连接。所述服务设备为微服务架构中的一个节点设备,所述服务设备中运行有微服务实例,所述微服务实例包括业务进程和基础框架进程。
处理器801被配置为支持服务设备执行上述实施例中业务进程和基础框架进程相应的功能。该处理器801可以是中央处理器(Central Processing Unit,CPU),网络处理器(Network Processor,NP),硬件芯片或者其任意组合。
存储器802用于存储程序代码等。存储器802可以包括易失性存储器(volatilememory),例如,随机存取存储器(Random Access Memory,RAM);存储器802也可以包括非易失性存储器(non-volatile memory),例如只读存储器(Read Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid State Drive,SSD);存储器802还可以包括上述种类的存储器的组合。
通信接口803用于接收和发送数据,例如,通信接口803用于接收微服务实例的退出指令,或者通信接口803用于从服务注册列表中删除所述微服务实例的服务注册信息等等。
在本申请实施例中,该服务设备包括多个通信接口,其中,用于发送数据的通信接口和用于接收数据的通信接口可以不为同一个通信接口。
处理器801可以调用存储器802中存储的程序代码以执行以下操作:
在所述基础框架进程接收到所述微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;
通过所述基础框架进程关闭所述基础框架进程的微服务监听端口,所述微服务监听端口用于接收来自服务调用方的业务请求,并在所述微服务实例中当前的业务请求处理完成之后通过所述基础框架进程关闭与发送所述业务请求的目标服务调用方之间的连接;
在所述业务进程接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能。
在一种实现方式中,处理器801在从服务注册列表中删除所述微服务实例的服务注册信息时,执行如下操作:
通过所述基础框架进程向所述服务注册列表发送服务注册信息删除请求,所述服务注册信息删除请求携带所述微服务实例的实例标识,以使所述服务注册列表删除所述实例标识所对应微服务实例的服务注册信息,且所述服务注册列表通知各个服务调用方删除所述服务调用方存储的所述微服务实例。
在一种实现方式中,处理器801在当前的业务请求处理完成之后关闭与发送所述业务请求的目标服务调用方之间的连接时,执行如下操作:
通过所述基础框架进程接收所述目标服务调用方发送的连接关闭请求,所述连接关闭请求是所述目标服务调用方在检测到所述目标服务调用方所提交的业务请求均处理完成时发送的;
通过所述基础框架进程根据所述连接关闭请求,确定来自所述目标服务调用方的业务请求均处理完成;
通过所述基础框架进程关闭与所述目标服务调用方之间的连接。
在一种实现方式中,处理器801在通过所述基础框架进程关闭所述基础框架进程的微服务监听端口之前,还用于执行如下操作:
通过所述基础框架进程获取从所述服务注册列表中删除所述微服务实例的服务注册信息的删除时间;
若从所述删除时间开始经过预设时长,则触发通过所述基础框架进程关闭所述基础框架进程的微服务监听端口。
在一种实现方式中,处理器801在通过业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能时,执行如下操作:
通过所述业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程对消息队列中消息的处理。
在一种实现方式中,处理器801在通过所述业务进程关闭所述业务进程对消息队列中消息的处理时,执行如下操作:
通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令;
若接收到所述微服务实例的退出指令,则通过所述业务进程结束对所述消息队列中消息的处理;
若未接收到所述微服务实例的退出指令,且所述消息队列中存在所述业务进程待处理的待处理消息,则通过所述业务进程对所述待处理消息进行处理;
若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令。
在一种实现方式中,处理器801在通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令之前,还用于执行如下操作:
判断是否经过阻塞时长;
若经过阻塞时长,则触发通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令;
处理器801若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令时,执行如下操作:
若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则获取确定未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息的确定时间;
若从所述确定时间开始经过所述阻塞时长,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令。
在一种实现方式中,所述微服务架构运行有多个微服务实例,每个微服务实例包括业务进程和基础框架进程,每个业务进程对应一个线程,所述线程用于判断是否接收到所述线程对应业务进程所属微服务实例的退出指令。
进一步地,处理器801还可以与通信接口803相配合,执行图5或图6所示方法实施例中业务进程和基础框架进程对应的操作,具体可参见方法实施例中的描述,在此不作赘述。
本申请实施例还提供一种计算机可读取存储介质,所述计算机可读取存储介质中存储计算机程序,所述计算机程序被处理器执行,用于实现上述实施例所述的微服务实例的退出方法。
上述计算机可读取存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
本申请实施例还提供一种计算机程序产品,该计算机程序产品被计算机设备运行时,可以执行上述图5或图6实施例中为服务设备所设计的微服务实例的退出方法。
在本申请实施例中还提供一种芯片,包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,该计算机程序用于实现上述方法实施例中的方法。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (11)

1.一种微服务实例的退出方法,其特征在于,所述微服务实例运行在微服务架构中,所述微服务实例包括业务进程和基础框架进程,所述方法包括:
所述基础框架进程在接收到所述微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;
所述基础框架进程关闭所述基础框架进程的微服务监听端口,所述微服务监听端口用于接收来自服务调用方的业务请求,所述微服务实例中当前的业务请求处理完成之后,关闭与发送所述业务请求的目标服务调用方之间的连接;
所述业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能。
2.如权利要求1所述的方法,其特征在于,所述从服务注册列表中删除所述微服务实例的服务注册信息,包括:
所述基础框架进程向所述服务注册列表发送服务注册信息删除请求,所述服务注册信息删除请求携带所述微服务实例的实例标识,以使所述服务注册列表删除所述实例标识所对应微服务实例的服务注册信息,且所述服务注册列表通知各个服务调用方删除所述服务调用方存储的所述微服务实例。
3.如权利要求2所述的方法,其特征在于,所述当前的业务请求处理完成之后,关闭与发送所述业务请求的目标服务调用方之间的连接,包括:
所述基础框架进程接收所述目标服务调用方发送的连接关闭请求,所述连接关闭请求是所述目标服务调用方在检测到所述目标服务调用方所提交的业务请求均处理完成时发送的;
所述基础框架进程根据所述连接关闭请求,确定来自所述目标服务调用方的业务请求均处理完成;
所述基础框架进程关闭与所述目标服务调用方之间的连接。
4.如权利要求1-3任一项所述的方法,其特征在于,所述基础框架进程关闭所述基础框架进程的微服务监听端口之前,还包括:
所述基础框架进程获取从所述服务注册列表中删除所述微服务实例的服务注册信息的删除时间;
若从所述删除时间开始经过预设时长,则触发所述基础框架进程关闭所述基础框架进程的微服务监听端口。
5.如权利要求1所述的方法,其特征在于,所述业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能,包括:
所述业务进程在接收到所述微服务实例的退出指令时,关闭所述业务进程对消息队列中消息的处理。
6.如权利要求5所述的方法,其特征在于,所述业务进程关闭所述业务进程对消息队列中消息的处理,包括:
通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令;
若接收到所述微服务实例的退出指令,则所述业务进程结束对所述消息队列中消息的处理;
若未接收到所述微服务实例的退出指令,且所述消息队列中存在所述业务进程待处理的待处理消息,则所述业务进程对所述待处理消息进行处理;
若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令。
7.如权利要求6所述的方法,其特征在于,所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令之前,还包括:
判断是否经过阻塞时长;
若经过阻塞时长,则触发通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令;
所述若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令,包括:
若未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息,则获取确定未接收到所述微服务实例的退出指令,且所述消息队列中不存在所述业务进程待处理的待处理消息的确定时间;
若从所述确定时间开始经过所述阻塞时长,则触发所述通过所述业务进程对应的线程判断是否接收到所述微服务实例的退出指令。
8.如权利要求6或7所述的方法,其特征在于,所述微服务架构运行有多个微服务实例,每个微服务实例包括业务进程和基础框架进程,每个业务进程对应一个线程,所述线程用于判断是否接收到所述线程对应业务进程所属微服务实例的退出指令。
9.一种微服务实例的退出装置,其特征在于,所述微服务实例运行在微服务架构中,所述微服务实例包括业务进程和基础框架进程,所述装置包括:
删除单元,用于在所述基础框架进程接收到所述微服务实例的退出指令时,从服务注册列表中删除所述微服务实例的服务注册信息;
关闭单元,用于通过所述基础框架进程关闭所述基础框架进程的微服务监听端口,所述微服务监听端口用于接收来自服务调用方的业务请求,并在所述微服务实例中当前的业务请求处理完成之后通过所述基础框架进程关闭与发送所述业务请求的目标服务调用方之间的连接;
所述关闭单元,还用于在所述业务进程接收到所述微服务实例的退出指令时,关闭所述业务进程的业务功能。
10.一种服务设备,其特征在于,所述服务设备为微服务架构中的一个节点设备,所述服务设备中运行有微服务实例,所述微服务实例包括业务进程和基础框架进程,所述服务设备包括处理器,所述处理器与存储器耦合,其中:
所述存储器,用于存储计算机程序;
所述处理器,用于调用所述计算机程序,使得所述服务设备执行如权利要求1~8中任一项所述的微服务实例的退出方法。
11.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储计算机程序,所述计算机程序被处理器执行,用于实现如权利要求1~8中任一项所述的微服务实例的退出方法。
CN202110146061.9A 2021-02-02 2021-02-02 微服务实例的退出方法、装置、设备及存储介质 Pending CN112799786A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110146061.9A CN112799786A (zh) 2021-02-02 2021-02-02 微服务实例的退出方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110146061.9A CN112799786A (zh) 2021-02-02 2021-02-02 微服务实例的退出方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN112799786A true CN112799786A (zh) 2021-05-14

Family

ID=75813823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110146061.9A Pending CN112799786A (zh) 2021-02-02 2021-02-02 微服务实例的退出方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112799786A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312037A (zh) * 2021-06-15 2021-08-27 北京百度网讯科技有限公司 应用于微服务的数据处理方法、装置、设备和存储介质
CN114443162A (zh) * 2022-01-05 2022-05-06 福建天泉教育科技有限公司 一种云原生微服务流控的方法与服务端
CN114595069A (zh) * 2022-04-29 2022-06-07 北京世纪好未来教育科技有限公司 服务下线方法、装置、电子设备及存储介质
CN115002232A (zh) * 2022-04-24 2022-09-02 青岛海尔科技有限公司 业务框架、数据处理方法、装置、设备及存储介质
CN115190178A (zh) * 2022-08-10 2022-10-14 苏州创意云网络科技有限公司 一种微服务分流方法、装置和设备
CN115202704A (zh) * 2022-06-07 2022-10-18 珠海金智维信息科技有限公司 Rpa应用程序的快速功能扩展方法、装置和存储介质
CN115277679A (zh) * 2022-07-29 2022-11-01 山石网科通信技术股份有限公司 文件同步方法和***
CN115914371A (zh) * 2022-10-31 2023-04-04 蚂蚁区块链科技(上海)有限公司 实例启动和报文转发方法及装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312037B (zh) * 2021-06-15 2023-11-24 北京百度网讯科技有限公司 应用于微服务的数据处理方法、装置、设备和存储介质
CN113312037A (zh) * 2021-06-15 2021-08-27 北京百度网讯科技有限公司 应用于微服务的数据处理方法、装置、设备和存储介质
CN114443162B (zh) * 2022-01-05 2023-05-23 福建天泉教育科技有限公司 一种云原生微服务流控的方法与服务端
CN114443162A (zh) * 2022-01-05 2022-05-06 福建天泉教育科技有限公司 一种云原生微服务流控的方法与服务端
CN115002232A (zh) * 2022-04-24 2022-09-02 青岛海尔科技有限公司 业务框架、数据处理方法、装置、设备及存储介质
CN115002232B (zh) * 2022-04-24 2024-03-22 青岛海尔科技有限公司 业务框架、数据处理方法、装置、设备及存储介质
CN114595069A (zh) * 2022-04-29 2022-06-07 北京世纪好未来教育科技有限公司 服务下线方法、装置、电子设备及存储介质
CN115202704A (zh) * 2022-06-07 2022-10-18 珠海金智维信息科技有限公司 Rpa应用程序的快速功能扩展方法、装置和存储介质
CN115277679A (zh) * 2022-07-29 2022-11-01 山石网科通信技术股份有限公司 文件同步方法和***
CN115277679B (zh) * 2022-07-29 2024-04-12 山石网科通信技术股份有限公司 文件同步方法和***
CN115190178A (zh) * 2022-08-10 2022-10-14 苏州创意云网络科技有限公司 一种微服务分流方法、装置和设备
CN115190178B (zh) * 2022-08-10 2024-03-08 苏州创意云网络科技有限公司 一种微服务分流方法、装置和设备
CN115914371A (zh) * 2022-10-31 2023-04-04 蚂蚁区块链科技(上海)有限公司 实例启动和报文转发方法及装置

Similar Documents

Publication Publication Date Title
CN112799786A (zh) 微服务实例的退出方法、装置、设备及存储介质
CN108683516B (zh) 一种应用实例的升级方法、装置和***
CN107526659B (zh) 用于失效备援的方法和设备
EP2354875B1 (en) Peer-to-Peer exchange of data resources in a control system
CN107016480B (zh) 任务调度方法、装置及***
CN111431740A (zh) 数据的传输方法、装置、设备及计算机可读存储介质
WO2019153488A1 (zh) 服务配置管理方法、装置、存储介质和服务器
CN112035228A (zh) 一种资源调度方法及装置
CN109656742B (zh) 一种节点异常处理方法、装置及存储介质
CN103164256A (zh) 一种实现单机支持高并发处理方法及***
JP2005209191A (ja) 高可用性システムの遠隔エンタープライズ管理
CN114138754A (zh) 基于Kubernetes平台的软件部署方法及装置
CN113626286A (zh) 多集群实例处理方法、装置、电子设备及存储介质
CN111143069A (zh) 服务管理方法、装置、电子设备、存储介质
US20200045139A1 (en) Remote procedure call using quorum state store
CN113297031A (zh) 容器集群中的容器组防护方法及装置
CN112732412B (zh) 一种服务配置文件处理方法、装置、存储介质及电子设备
CN113515316A (zh) 一种新型边缘云操作***
US20240054054A1 (en) Data Backup Method and System, and Related Device
CN113312059A (zh) 一种服务处理***、方法及云原生***
CN104272789A (zh) 移动通信***、呼叫处理节点以及通信控制方法
CN115102999A (zh) DevOps***、服务提供方法、存储介质和电子装置
CN114615263A (zh) 集群在线迁移方法、装置、设备及存储介质
CN116860382A (zh) 基于容器的微服务集群实现的方法及装置
US10419368B1 (en) Dynamic scaling of computing message architecture

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