发明内容
有鉴于此,本发明实施例提供了一种微服务灰度发布方法及装置、计算机设备及存储介质,旨在有效提高复杂业务系统的发布效率、稳定性和可监控性,实现分布式云化架构的部署自动化、标准化、流程化,全面支持IT各类系统高效上云。
为解决上述技术问题,本发明实施例提供了一种微服务灰度发布方法,包括:初始化微服务灰度发布所需的系统基础信息;拉取源代码,根据所述源代码编译构建出服务部署介质,并存储到制品库;根据部署目标环境,配置对应的服务部署后端,并初始化前置模块服务;配置发布过程中的部署参数;编排灰度发布流程,引用发布配置参数,生成灰度发布任务和灰度发布策略;根据编排的灰度发布流程,驱动发布流程执行,并根据所述灰度发布策略,控制灰度发布过程中的请求流量切换、执行过程,将发布日志记录发送到监控队列;根据所述监控队列中的发布日志记录,监控所述灰度发布任务的执行状态以及流量分布状态。
本发明实施例还提供了一种微服务灰度发布装置,包括:基础信息管理模块,用于初始化微服务灰度发布所需的系统基础信息;持续集成模块,用于拉取源代码,根据所述源代码编译构建出服务部署介质,并存储到制品库;环境部署模块,用于根据部署目标环境,配置对应的服务部署后端,并初始化前置模块服务;发布配置模块,用于配置发布过程中的部署参数;发布流程编排模块,用于编排灰度发布流程,引用发布配置参数,生成灰度发布任务和灰度发布策略;发布流程引擎,用于根据编排的灰度发布流程,驱动发布流程执行,并根据所述灰度发布策略,控制灰度发布过程中的请求流量切换、执行过程,将发布日志记录发送到监控队列;发布监控模块,用于根据所述监控队列中的发布日志记录,监控所述灰度发布任务的执行状态以及流量分布状态。
本发明实施例还提供了一种计算机设备,包括:存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如前所述的方法。
本发明实施例还提供了一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行如前所述的方法。
另外,所述根据部署目标环境,配置对应的服务部署后端,并初始化前置模块服务,包括:采用以下配置项配置所述服务部署后端:制品版本、部署方式、资源;配置后的所述服务部署后端支持配置失败是否执行,以控制此子任务执行失败后是否继续执行后续子任务;所述服务部署后端的部署方式包括:容器化部署、主机部署以及自定义部署。
另外,所述配置发布过程中的部署参数,包括:配置应用灰度发布任务信息;所述应用灰度发布任务信息包括:服务运行配置、服务执行配置;所述服务运行配置包括:CPU、内存以及部署目录。
另外,所述灰度发布任务流程包括以下流程模式:单任务、串行任务、并行任务模式以及组合任务模式;所述灰度发布任务流程的子任务包括以下任务类型:SQL脚本子任务、Shell脚本子任务、Webhook子任务、审核子任务、自动化测试子任务;所述灰度发布任务流程的子任务配置信息包括部署方式、部署地址、集群、命名空间、镜像、访问方式、启动参数、部署目录、部署脚本;所述灰度发布任务流程配置包括:配置访问上下文以及路由策略;其中,所述路由策略包括:流量分发策略;所述流量分配策略包括以下任意一者的规则配置:权重、IP、header、cookie。
另外,所述驱动发布流程执行,包括:按照单个微服务或者系统粒度控制灰度发布执行。
另外,所述编排灰度发布流程,引用发布配置参数,生成灰度发布任务和灰度发布策略,包括:在编排发布任务流程时,选择子任务节点类型,创建节点任务,并配置任务节点信息直到灰度发布流程创建完成;其中,配置任务节点信息包括:部署方式、部署地址、集群、命名空间、镜像;所述根据编排的灰度发布流程,驱动发布流程执行,并根据所述灰度发布策略,控制灰度发布过程中的请求流量切换、执行过程,包括:轮询灰度发布任务,加载灰度发布任务并执行,根据灰度发布任务配置中的部署目标环境信息,部署应用到对应目标环境;根据任务配置中灰度配置信息设置应用的灰度发布策略。
另外,所述装置还包括:任务管理模块,用于定义和管理发布任务,提供发布任务的增删改查功能;发布配置管理模块,用于管理发布任务中用到的可复用的发布配置;所述发布流程引擎,还用于提供发布流程的增删改查功能;所述发布监控模块,还用于接收所述监控队列中的发布监控数据,并从以下维度提供发布流程的监控试图:任务、服务、系统、时间线。
本发明实施例相对于现有技术而言,可提供部署、SQL执行、Shell执行、人工审核、流量切换、WebHook、自动化测试、通知等发布任务集,接收到用户可视化编排好的发布流程后,通过流程引擎创建流程实例,驱动发布流程的执行。根据配置,发布任务流程从部署成品库获取对应的介质,调用对应后端的部署发布能力,完成服务的发布,利用灰度发布控制模块,控制灰度发布过程中请求路由策略的配置,完成灰度发布,有效提高了微服务灰度发布的效率、稳定性和可监控性,保障了应用在部署发布阶段的业务连续性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本发明而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明所要求保护的技术方案。
本发明实施例提供一种微服务灰度发布方法,作为举例而非限制,该方法可应用于中国电信企业应用开发平台,以支撑系统灰度发布过程。如图1所示,该方法包括以下步骤:
步骤101:初始化微服务灰度发布所需的系统基础信息。
本实施例中,提供用于管理系统、应用、代码、用户、权限等基础信息的基础信息管理模块,从而为其他模块提供基础信息。在本发明具体实施例中,运行环境包括但不限于:JVM(Java Virtual Machine,简称JVM)虚拟机、Shell运行环境、Python运行环境。初始化的系统基础信息包括但不限于系统名称、应用名称。
步骤102:拉取源代码,根据所述源代码编译构建出服务部署介质,并存储到制品库。
本实施例中,提供持续集成模块,用于根据流水线配置持续构建集成、生成部署需要的jar包、容器镜像等制品,并保存到制品库,根据相应标准提供API(ApplicationProgramming Interface,应用程序接口)地址。具体而言,构建服务部署包包括但不限于:部署包(源代码编译、打包、上传部署包);镜像(镜像构建、同步镜像);上传shell脚本、python脚本等操作。
步骤103:根据部署目标环境,配置对应的服务部署后端,并初始化前置模块服务。
本实施例中,接收部署能力管理模块下发的部署命令,将前置模块部署在对应部署资源池中,完成部署接口的调用。
可选地,本实施例中,步骤103包括:采用以下配置项配置服务部署后端:制品版本、部署方式、资源,即部署适配服务用于部署应用,配置项包括:制品版本、部署方式、资源等具体部署相关参数配置。配置后的服务部署后端支持配置失败是否执行,以控制此子任务执行失败后是否继续执行后续子任务。服务部署后端的部署方式包括:容器化部署、主机部署以及自定义部署。其中,容器化部署是指通过配置集群、集群空间和具体部署配置项,将应用部署到目标集群的集群空间下。主机部署是指将应用部署到目标服务器,满足传统部署需要,通过配置主机,子任务执行时会将应用部署包传输到目标主机。,自定义部署提供标准API输入输出定义,外部部署平台需根据此标准提供API地址。
步骤104:配置发布过程中的部署参数。
本实施例中,配置发布过程中的部署参数可包括:配置应用灰度发布任务信息。应用灰度发布任务信息可以包括:服务运行配置、服务执行配置。服务运行配置包括:CPU、内存以及部署目录,然不限于此。
步骤105:编排灰度发布流程,引用发布配置参数,生成灰度发布任务和灰度发布策略。
本实施例中,提供发布流程编排模块,用于管理发布流程,提供发布流程的增删改查功能,负责发布流程实例的创建,并驱动发布流程的执行,根据灰度发布的策略,控制灰度发布的执行以及请求流量分发配置的变更。
可选地,本实施例中,可在应用开发系统提供的可视化UI操作界面,动态地创建组合多种不同模式应用灰度发布任务流程。其中,灰度发布任务流程包括以下流程模式:单任务、串行任务、并行任务模式以及组合任务模式。灰度发布任务流程的子任务包括以下任务类型:SQL脚本子任务、Shell脚本子任务、Webhook子任务、审核子任务、自动化测试子任务。灰度发布任务流程的子任务配置信息包括部署方式、部署地址、集群、命名空间、镜像、访问方式、启动参数、部署目录、部署脚本等。灰度发布任务流程配置包括:配置访问上下文以及路由策略。其中,路由策略包括:流量分发策略。流量分配策略包括以下任意一者的规则配置:权重、IP、header、cookie。
步骤106:根据编排的灰度发布流程,驱动发布流程执行,并根据灰度发布策略,控制灰度发布过程中的请求流量切换、执行过程,将发布日志记录发送到监控队列。
本实施例中,提供发布执行模块,用于对接各类部署后端的部署能力,管理前置模块,执行真实的部署发布指令。
可选地,步骤106驱动发布流程执行包括:按照单个微服务或者系统粒度(即多个微服务)控制灰度发布执行。
本实施例中,步骤105可以包括:在编排发布任务流程时,选择子任务节点类型,创建节点任务,并配置任务节点信息直到灰度发布流程创建完成;其中,配置任务节点信息:部署方式、部署地址、集群、命名空间、镜像。步骤106可以包括:发布流程引擎轮询灰度发布任务,根据编排的灰度发布流程,驱动发布流程执行,并根据灰度发布策略,控制灰度发布过程中的请求流量切换、执行过程,包括:轮询灰度发布任务,加载灰度发布任务并执行,根据灰度发布任务配置中的部署目标环境信息,部署应用到对应目标环境;根据任务配置中灰度配置信息设置应用的灰度发布策略。
步骤107:根据监控队列中的发布日志记录,监控灰度发布任务的执行状态以及流量分布状态。
本实施例中,提供发布监控模块,用于接收各模块写入到监控队列中的发布监控数据,并从任务、服务、系统、时间线等不同维度提供发布的监控视图。
下面对本发明微服务灰度发布方法的具体流程举例说明如下,该方法包括:
S201:在JVM中启动企业应用开发平台。
S202:持续集成模块根据系统基础信息中的源码地址从gitlab中拉取源代码,使用marven编译打包并上传到artifactory。
S203:持续集成模块根据dockerfile建镜像并将镜像push(上传)到镜像库harbor。
S204:部署适配服务根据选择部署目标环境,配置对应的服务部署后端,包含容器、传统主机(非容器)、自定义后端。
S205:部署适配服务配置对应发布过程中所需参数,包括CPU、内存、JVM参数等信息。
S206:发布流程编排模块编排发布任务流程,选择子任务节点类型。
S207:发布流程编排模块创建节点任务。
S208:发布流程编排模块配置任务节点信息:部署方式、部署地址、集群、命名空间、镜像等。
S209:确定任务流程是否创建完成,若完成,则执行S210,若否,重复执行S206~S209直到任务流程创建完成。
S210:灰度发布任务流程配置服务配置应用灰度发布策略。
S211:发布流程编排模块提交应用灰度发布任务。
S212:发布流程引擎轮询灰度发布任务。
S213:发布流程引擎加载灰度发布任务并执行,根据灰度发布任务配置中的部署目标环境信息,部署应用到对应目标环境。
S214:发布流程引擎根据任务配置中灰度配置信息设置应用的灰度发布策略。
S215:发布流程引擎记录应用灰度发布任务执行结果以及状态。
S216:发布监控模块加载任务配置信息,监控部署任务执行状态以及监控灰度流量分布状态。
本发明实施例的微服务灰度发布方法与现有技术相比,提供部署、SQL执行、Shell执行、人工审核、流量切换、WebHook、自动化测试、通知等发布任务集,接收到用户可视化编排好的发布流程后,通过流程引擎创建流程实例,驱动发布流程的执行。根据配置,发布任务流程从部署成品库获取对应的介质,调用对应后端的部署发布能力,完成服务的发布,利用灰度发布控制模块,控制灰度发布过程中请求路由策略的配置,完成灰度发布,有效提高了微服务灰度发布的效率、稳定性和可监控性,保障了应用在部署发布阶段的业务连续性。
本发明实施例还提供一种微服务灰度发布装置200,可配置于中国电信企业应用开发平台。如图2所示,本实施例的微服务灰度发布装置200包括:
基础信息管理模块201,用于初始化微服务灰度发布所需的系统基础信息。
本实施例中,基础信息管理模块201用于管理系统、应用、代码、用户、权限等基础信息,从而为其他模块提供基础信息。在本发明具体实施例中,运行环境包括但不限于:JVM(Java Virtual Machine,简称JVM)虚拟机、Shell运行环境、Python运行环境。初始化的系统基础信息包括但不限于系统名称、应用名称。
持续集成模块202,用于拉取源代码,根据所述源代码编译构建出服务部署介质,并存储到制品库。持续集成模块202,用于根据流水线配置持续构建集成、生成部署需要的jar包、容器镜像等制品,并保存到制品库,根据相应标准提供API地址。
环境部署模块203,用于根据部署目标环境,配置对应的服务部署后端,并初始化前置模块服务。环境部署模块203,用于接收部署能力管理模块下发的部署命令,将前置模块部署在对应部署资源池中,完成部署接口的调用。
发布配置模块204,用于配置发布过程中的部署参数。
发布流程编排模块205,用于编排灰度发布流程,引用发布配置参数,生成灰度发布任务和灰度发布策略。
发布流程引擎206,用于根据编排的灰度发布流程,驱动发布流程执行,并根据所述灰度发布策略,控制灰度发布过程中的请求流量切换、执行过程,将发布日志记录发送到监控队列。
发布监控模块207,用于根据所述监控队列中的发布日志记录,监控所述灰度发布任务的执行状态以及流量分布状态。
可选地,该装置200还可以还包括:
任务管理模块,用于定义和管理发布任务,提供发布任务的增删改查功能;以及发布配置管理模块,用于管理发布任务中用到的可复用的发布配置。
可选地,发布流程引擎206,还可以用于提供发布流程的增删改查功能。
另外,发布监控模块207,还可以用于接收监控队列中的发布监控数据,并从以下维度提供发布流程的监控试图:任务、服务、系统、时间线。
本发明实施例的微服务灰度发布装置与现有技术相比,提供部署、SQL执行、Shell执行、人工审核、流量切换、WebHook、自动化测试、通知等发布任务集,接收到用户可视化编排好的发布流程后,通过流程引擎创建流程实例,驱动发布流程的执行。根据配置,发布任务流程从部署成品库获取对应的介质,调用对应后端的部署发布能力,完成服务的发布,利用灰度发布控制模块,控制灰度发布过程中请求路由策略的配置,完成灰度发布,有效提高了微服务灰度发布的效率、稳定性和可监控性,保障了应用在部署发布阶段的业务连续性。
本发明一实施例还提供一种计算机设备。该设备包括:存储器、处理器;
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行以实现前述实施例所述的方法。
该计算机设备包括一个或多个处理器以及存储器,本发明实施例以一个处理器为例。处理器、存储器可以通过总线或者其他方式连接。存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施方式中的微服务灰度发布方法。
本发明实施例的计算机设备与现有技术相比,提供部署、SQL执行、Shell执行、人工审核、流量切换、WebHook、自动化测试、通知等发布任务集,接收到用户可视化编排好的发布流程后,通过流程引擎创建流程实例,驱动发布流程的执行。根据配置,发布任务流程从部署成品库获取对应的介质,调用对应后端的部署发布能力,完成服务的发布,利用灰度发布控制模块,控制灰度发布过程中请求路由策略的配置,完成灰度发布,有效提高了微服务灰度发布的效率、稳定性和可监控性,保障了应用在部署发布阶段的业务连续性。
上述设备可执行本发明实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
本申请一实施例还提供一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。