CN113986316A - 一种微服务的自动部署方法 - Google Patents
一种微服务的自动部署方法 Download PDFInfo
- Publication number
- CN113986316A CN113986316A CN202111607735.7A CN202111607735A CN113986316A CN 113986316 A CN113986316 A CN 113986316A CN 202111607735 A CN202111607735 A CN 202111607735A CN 113986316 A CN113986316 A CN 113986316A
- Authority
- CN
- China
- Prior art keywords
- service
- application
- successfully
- automatic deployment
- started
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种微服务的自动部署方法,包括以下步骤:通过自动部署脚本停止当前应用,并验证当前应用是否停止成功;在当前应用停止成功后,安装新应用;通过自动化脚本启动新应用,并验证新应用是否启动成功。本发明自动部署方法做了常用组件的上下线管理、验证,通过应用停止的管理及停止后的自动验证操作,以及新服务启动后的自动验证操作,可以有效保障服务的正常应用,避免出错,同时通过自动部署验证,避免了开发人员人工操作,继而缩短了服务投产时间。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种微服务的自动部署方法。
背景技术
微服务是一种软件开发技术-面向服务的体系结构(SOA)架构样式的一种变体,将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。目前对于微服务的部署是基于部署平台实现,部署平台先通知各个服务下线,然后再发布新服务,并建立各个新服务之间的通信连接。
随着业务的发展,业务应用在需求的推动下不断的迭代以满足客户对产品期望,从而保障产品稳定的客户群体。业务应用的迭代离不开开发和运维人员的努力,面对成熟的DevOps系统实现开发人员在提交功能代码后能够快速投产上线。但微服务应用在服务器升级过程中,涉及应用服务的下线、上线以保证在线业务的持续运行。运维在实现了构建、停机、发布、启动等完整的发布生命周期,但并不能完全的干预应用层面的服务上/下线功能。例如:服务停机前微服务下线、RabbitMQ或Kafka消费者的停止消费、Dubbo服务的下线等,因此投产过程中容易存在因下线未成功或消费进行而导致部署失败,或者需要开发人员花费大量的时间进行服务验证工作,导致投产时间长,操作失误导致的业务异常时有发生。
发明内容
本发明的目的在于提供一种微服务的自动部署方法,通过自动部署验证,保障投产成功的同时也减少开发人员的工作。
为了实现上述发明目的,本发明实施例提供了以下技术方案:
一种微服务的自动部署方法,包括以下步骤:
通过自动部署脚本停止当前应用,并验证当前应用是否停止成功;
在当前应用停止成功后,安装新应用;
通过自动化脚本启动新应用,并验证新应用是否启动成功。
所述验证当前应用是否停止成功包括:检查应用端口的TCP/IP链接的ESTABLISHED状态的数量是否已归零;当应用端口的TCP/IP链接的ESTABLISHED状态的数量归零时,则当前应用停止成功。
所述验证新应用是否启动成功包括:检查应用端口是否处于LISTEN状态,以及判断应用启动完成后的日志标识是否为已完全启动;当应用端口处于LISTEN状态,且日志标识为已完全启动时,则新应用启动成功。
与现有技术相比,本发明具有以下有益效果:
通过程序化、流程化实现服务的自动下线、服务间通讯、业务状态检查等,减少开发人员的人为操作,最大限度的降低人为操作导致的业务异常率,提高业务服务的稳定性、缩短整体的投产时长,在原投产时长的基础上缩短50%。
应用自动化部署脚本后,极大的简化了流产的人工操作流程。人工操作的减少也提高了认为操作失误导致的服务异常。
开发人员在集成自动化部署脚本后,投产过程得到了有效的简化。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为实施例中微服务的自动部署方法的流程图。
图2为基于Spring Boot实现的微服务应用中Eureka的逻辑图。
图3为基于Apache Dubbo实现的分布式应用的逻辑图。
图4为基于Nginx实现反向代理应用服务的逻辑图。
图5为基于RabbitMQ、Kafka异步消息服务的消费者服务的逻辑图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中可能使用到的术语说明:
Spring Cloud Eureka:Spring Cloud Eureka是Spring Cloud集合中一个组件,它是对Eureka的集成,用于服务注册和发现。Eureka是Netflix中的一个开源框架。
Apache Dubbo:Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。
Nginx:Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
RabbitMQ:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
Apache Kafka:Apache Kafka是一个开源消息系统项目,由Scala写成。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
请参阅图1,本实施例中提供的一种微服务的自动部署方法,包括以下步骤:
S1,通过自动部署脚本停止当前应用,并验证当前应用是否停止成功。
停止当前应用就是指当前应用下线,下线验证的过程主要包括:检查应用端口的TCP/IP链接的ESTABLISHED状态的数量是否已归零。当应用端口的TCP/IP链接的ESTABLISHED状态的数量归零时,即可说明当前应用下线成功。
S2,在当前应用停止成功后,安装新应用。
S3,通过自动化脚本启动新应用,并验证新应用是否启动成功。
启动新应用就是指新应用上线,上线验证过程主要包括:1. 检查应用端口是否处于LISTEN状态。2.判断应用启动完成后的日志标识是否为已完全启动。当应用端口处于LISTEN状态,且日志标识为已完全启动时,即可说明新应用上线成功。
公用的服务或者应用仅能解决具有共性的问题,但不能解决这种业务应用集成不同组件的服务上下线时机,需要人工的确认。需要人工确认的部分或者不同的应用使用的组件集合不同,本发明自动部署方法做了常用组件的上下线管理、验证,通过应用停止的管理及停止后的自动验证操作,以及新服务启动后的自动验证操作,可以有效保障服务的正常应用,避免出错,同时通过自动部署验证,避免了开发人员人工操作,继而缩短了服务投产时间。
针对于不同的服务类型,步骤S1和S3的处理有所不同,此处将列举几种常见的服务类型进行举例。针对于同一服务类型,步骤S1与S3的处理类似,因此,在举例时同时对步骤S1和S3进行说明。
举例1:基于Spring Boot实现微服务应用
基于Spring Boot实现微服务应用,服务接口通过OpenFeign组件发布服务,业务应用注册到Eureka组件实现高可用注册中心。基于Spring Cloud基础注册中心组件实现服务的上线和下线、服务通知功能。
更具体地,如图2所示,注册中心、服务提供方与服务消费方之间的通信流程如下:
1. 服务提供方向注册中心注册服务。
2. 服务消费方向注册中心拉取服务注册信息。
3. 服务消费方向服务提供方调用服务。
4. 服务下线,执行DiscoveryClient 的shutdown()方法,服务提供方通知注册中心实例状态为下线(DOWN)。
5. 服务提供方遍历所有本服务的服务消费方,并通知服务消费方刷新本地缓存。
6. 服务消费方收到通知后主动向注册中心拉取服务列表。
容易理解的是,对于步骤S1中的停止当前应用操作,具体执行的是步骤4-5,而对于步骤S3中的启动新应用的操作,执行的是步骤1-3。
传统的服务通过原生的管理端点执行下线后不能通知到服务的消费方进行服务列表刷线,完全通过人工的方式进行确认。本发明增加Eureka实例下线管理端点(Endpoint),用于微服务实例的下线,增加Eureka实例下线通知管理端点(Endpoint),用于实例下线前通知服务消费方拉取最新的服务实例列表,可以实现自动通知。
举例2:基于Apache Dubbo实现分布式应用
基于Apache Dubbo实现分布式应用,增加Dubbo服务下线管理端点,通过请求Dubbo Admin的管理接口下线服务。增加Dubbo服务上线管理端点,通过请求Dubbo Admin的管理接口上线服务。
具体地,如图3所示,注册中心、服务提供方、服务消费方与服务管理中心之间的通信流程如下:
1. 服务提供方在启动时,向注册中心注册自己提供的服务。
2. 服务消费方在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供方地址列表给服务消费方,如果有变更,注册中心将基于长连接推送变更数据给服务消费方。
4. 服务消费方从提供方地址列表中,基于软负载均衡算法,选择一台服务提供方进行调用,如果调用失败,再选另一台服务提供方调用。
5. 服务提供方通过actuator的Dubbo服务管理端点向服务管理中心请求启用或禁用应用实例下的服务。
6. 服务管理中心向注册中心发起服务启用或禁用指令。
7. 注册中心向所有订阅该服务的服务消费方发送服务启用或禁用通知,使得所有订阅该服务的服务消费方均会收到服务启用或禁用通知。
举例3:基于Nginx实现服务挂载,对外提供Http服务的应用
基于Nginx实现反向代理应用服务,对外提供Http服务的应用,集成ngx_dynamic_upstream插件,实现Nginx对代理服务的上线和下线。修改Nginx配置文件增加管理端点的配置。通过开放Restful接口完成Nginx反向代理应用服务上线、下线、权重调整功能。
如图4所示,服务(APP)及服务实例(instance)通过Nginx配置被Nginx反向代理,Nginx通过ngx_dynamic_upstream插件,管理服务实例的上线和下线。
举例4:针对异步消息的消费者服务
基于RabbitMQ或Kafka的异步消息组件应用服务实现,针对异步消息的消费者服务,如图5所示,通过开放管理端点实现消息消费者服务的启停。消费者服务在服务下线前,需要停止消息的消费。消费者服务在服务上线后,需要启动消息的消费。
本发明实施例提供的以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种微服务的自动部署方法,其特征在于,包括以下步骤:
通过自动部署脚本停止当前应用,并验证当前应用是否停止成功;
在当前应用停止成功后,安装新应用;
通过自动化脚本启动新应用,并验证新应用是否启动成功。
2.根据权利要求1所述的微服务的自动部署方法,其特征在于,所述验证当前应用是否停止成功包括:检查应用端口的TCP/IP链接的ESTABLISHED状态的数量是否已归零;应用端口的TCP/IP链接的ESTABLISHED状态的数量归零时,则当前应用停止成功。
3.根据权利要求1所述的微服务的自动部署方法,其特征在于,所述验证新应用是否启动成功包括:检查应用端口是否处于LISTEN状态,以及判断应用启动完成后的日志标识是否为已完全启动;当应用端口处于LISTEN状态,且日志标识为已完全启动时,则新应用启动成功。
4.根据权利要求1所述的微服务的自动部署方法,其特征在于,针对基于Spring Boot实现的微服务应用,所述通过自动部署脚本停止当前应用包括:服务提供方通知注册中心实例状态为下线,并遍历所有本服务的服务消费方,通知服务消费方刷新本地缓存,以便于服务消费方收到通知后主动向注册中心拉取服务列表。
5.根据权利要求1所述的微服务的自动部署方法,其特征在于,针对基于Apache Dubbo实现的分布式应用,所述通过自动部署脚本停止当前应用包括: 服务提供方通过actuator的Dubbo服务管理端点向服务管理中心请求禁用应用实例下的服务,服务管理中心向注册中心发起服务禁用指令,注册中心向所有订阅该服务的服务消费方发送服务禁用通知,使得所有订阅该服务的服务消费方均会收到服务禁用通知。
6.根据权利要求1所述的微服务的自动部署方法,其特征在于,针对基于Nginx实现反向代理应用服务,集成ngx_dynamic_upstream插件,实现Nginx对代理服务的停止和启动。
7.根据权利要求1所述的微服务的自动部署方法,其特征在于,基于RabbitMQ或Kafka的异步消息组件应用服务实现,针对异步消息的消费者服务,通过开放管理端点实现消息消费者服务的停止和启动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111607735.7A CN113986316A (zh) | 2021-12-27 | 2021-12-27 | 一种微服务的自动部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111607735.7A CN113986316A (zh) | 2021-12-27 | 2021-12-27 | 一种微服务的自动部署方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986316A true CN113986316A (zh) | 2022-01-28 |
Family
ID=79734399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111607735.7A Pending CN113986316A (zh) | 2021-12-27 | 2021-12-27 | 一种微服务的自动部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986316A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115002194A (zh) * | 2022-05-25 | 2022-09-02 | 中国工商银行股份有限公司 | 一种微服务的管理方法及相关装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200036A (zh) * | 2013-04-08 | 2013-07-10 | 国电南瑞科技股份有限公司 | 一种电力系统云计算平台的自动化配置方法 |
WO2016167039A1 (ja) * | 2015-04-14 | 2016-10-20 | ソニー株式会社 | 情報処理装置、情報処理方法、コンピュータプログラム及びサーバ装置 |
CN106775806A (zh) * | 2016-11-18 | 2017-05-31 | 国云科技股份有限公司 | 一种升级私有云应用的方法 |
CN108694048A (zh) * | 2018-05-04 | 2018-10-23 | 广州慧睿思通信息科技有限公司 | 一种批量发布服务的实现方法 |
CN109450710A (zh) * | 2018-12-21 | 2019-03-08 | 北京金山云网络技术有限公司 | 可视化服务信息管理方法、装置、电子设备及存储介质 |
CN110719528A (zh) * | 2019-10-18 | 2020-01-21 | 重庆空间视创科技有限公司 | 一种iptv终端热更新系统及方法 |
CN110837377A (zh) * | 2018-08-15 | 2020-02-25 | 北京国双科技有限公司 | 一种应用程序的更新方法及装置、存储介质、电子设备 |
CN111240760A (zh) * | 2020-01-08 | 2020-06-05 | 江苏满运软件科技有限公司 | 基于注册中心的应用发布方法、系统、存储介质及设备 |
CN111580832A (zh) * | 2020-04-29 | 2020-08-25 | 电科云(北京)科技有限公司 | 应用于异构多云环境的应用发布系统及方法 |
CN111831289A (zh) * | 2020-06-30 | 2020-10-27 | 山东大学 | 一种微服务自动化部署管理系统及方法 |
-
2021
- 2021-12-27 CN CN202111607735.7A patent/CN113986316A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200036A (zh) * | 2013-04-08 | 2013-07-10 | 国电南瑞科技股份有限公司 | 一种电力系统云计算平台的自动化配置方法 |
WO2016167039A1 (ja) * | 2015-04-14 | 2016-10-20 | ソニー株式会社 | 情報処理装置、情報処理方法、コンピュータプログラム及びサーバ装置 |
CN106775806A (zh) * | 2016-11-18 | 2017-05-31 | 国云科技股份有限公司 | 一种升级私有云应用的方法 |
CN108694048A (zh) * | 2018-05-04 | 2018-10-23 | 广州慧睿思通信息科技有限公司 | 一种批量发布服务的实现方法 |
CN110837377A (zh) * | 2018-08-15 | 2020-02-25 | 北京国双科技有限公司 | 一种应用程序的更新方法及装置、存储介质、电子设备 |
CN109450710A (zh) * | 2018-12-21 | 2019-03-08 | 北京金山云网络技术有限公司 | 可视化服务信息管理方法、装置、电子设备及存储介质 |
CN110719528A (zh) * | 2019-10-18 | 2020-01-21 | 重庆空间视创科技有限公司 | 一种iptv终端热更新系统及方法 |
CN111240760A (zh) * | 2020-01-08 | 2020-06-05 | 江苏满运软件科技有限公司 | 基于注册中心的应用发布方法、系统、存储介质及设备 |
CN111580832A (zh) * | 2020-04-29 | 2020-08-25 | 电科云(北京)科技有限公司 | 应用于异构多云环境的应用发布系统及方法 |
CN111831289A (zh) * | 2020-06-30 | 2020-10-27 | 山东大学 | 一种微服务自动化部署管理系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115002194A (zh) * | 2022-05-25 | 2022-09-02 | 中国工商银行股份有限公司 | 一种微服务的管理方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8914449B2 (en) | Push messaging platform with high scalability and high availability | |
CN109286529B (zh) | 一种恢复RabbitMQ网络分区的方法及系统 | |
CN112448858B (zh) | 网络通信控制方法及装置、电子设备和可读存储介质 | |
CN111176873B (zh) | 一种微服务自动下线方法、装置、计算机设备及存储介质 | |
CN104408071A (zh) | 一种基于集群管理器的分布式数据库高可用方法及系统 | |
US9026839B2 (en) | Client based high availability method for message delivery | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN112882738A (zh) | 一种微服务架构下的配置信息更新方法、装置及电子设备 | |
US20190303261A1 (en) | Automating and monitoring rolling cluster reboots | |
CN113986316A (zh) | 一种微服务的自动部署方法 | |
CN113626211A (zh) | 消息队列的切换方法、切换系统、电子设备及存储介质 | |
CN111459640A (zh) | 跨平台批量作业调度方法及系统 | |
CN114679463B (zh) | 一种实现pcdn资源管理的方法和装置 | |
CN111143170A (zh) | 云手机监控系统和方法 | |
CN112559461A (zh) | 文件传输方法及装置、存储介质及电子设备 | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
CN100359865C (zh) | 一种检测方法 | |
US10701167B1 (en) | Adaptive quorum for a message broker service | |
CN112115003A (zh) | 一种服务进程的掉线恢复方法、装置、设备及存储介质 | |
CN112596761B (zh) | 服务的更新发布方法、装置及相关设备 | |
JP2015114952A (ja) | ネットワークシステム、監視制御装置およびソフトウェア検証方法 | |
CN113098936A (zh) | 一种向移动端推送消息的方法、装置及设备 | |
CN103716186B (zh) | 具有网络故障容错能力的人工话务系统及其方法 | |
CN109586961B (zh) | 网络配置方法和装置 | |
CN110858842A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220128 |