CN112905229A - 发布微服务应用的方法、系统、计算机设备和存储介质 - Google Patents

发布微服务应用的方法、系统、计算机设备和存储介质 Download PDF

Info

Publication number
CN112905229A
CN112905229A CN202110212480.8A CN202110212480A CN112905229A CN 112905229 A CN112905229 A CN 112905229A CN 202110212480 A CN202110212480 A CN 202110212480A CN 112905229 A CN112905229 A CN 112905229A
Authority
CN
China
Prior art keywords
service
service provider
micro
version number
openness
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
CN202110212480.8A
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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN202110212480.8A priority Critical patent/CN112905229A/zh
Publication of CN112905229A publication Critical patent/CN112905229A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及云部署技术领域,提供一种发布微服务应用的方法、系统、计算机设备和存储介质,应用于微服务系统,所述微服务系统包括openresty平台、服务提供方以及服务调用方,服务提供方将其在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册至服务列表中,服务调用方定时从所述微服务注册中心获取所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地,使得应用在滚动发布时,也依然可以通过openresty域名路由进行调用;同时,openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方,解决了应用滚动发布期间,转发到正在发布的微服务实例导致的服务不可用的问题。

Description

发布微服务应用的方法、系统、计算机设备和存储介质
技术领域
本申请涉及云部署的技术领域,特别涉及一种发布微服务应用的方法、系统、计算机设备和存储介质。
背景技术
应用程序升级面临最大挑战是新旧业务切换,将应用程序从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布、灰度发布和滚动发布。滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本,目的是尽可能避免因发布导致的流量丢失或服务不可用问题。
在发布期间,传统的滚动发布忽视了应用的高可用性,微服务间的调用依然存在请求路由到正在发布的微服务节点。针对高可用性要求非常高的系统而言,传统的滚动发布难以满足要求。同时,滚动发布期间手动摘除微服务,一方面自动化部署步骤变得冗长,另一方面,增加了系统运维成本,使得系统无法安全高效地运作,影响客户体验度。
发明内容
本申请的主要目的为提供一种发布微服务应用的方法、系统、计算机设备和存储介质,旨在克服目前滚动发布微服务应用时应用不可用的缺陷。
为实现上述目的,本申请提供了一种发布微服务应用的方法,应用于微服务系统,所述微服务系统中导入有openfeign SDK工具包以运行openresty平台,所述微服务系统还包括服务提供方以及服务调用方,所述方法包括以下步骤:
所述服务提供方将所述服务提供方在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册,并存储至服务列表中;其中,所述服务提供方为所述微服务系统中前一批滚动发布的应用;
服务调用方定时从所述微服务注册中心获取所述服务列表;其中,所述服务调用方为所述微服务系统中后一批滚动发布的应用;
所述服务调用方根据所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地;
所述openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方。
进一步地,所述滚动发布所述服务提供方的步骤之后,包括:
所述服务提供方获取滚动发布之前的第一版本号;其中,所述第一版本号包括三级;
所述服务提供方获取滚动发布时的更新内容;
所述服务提供方根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
所述服务提供方根据所述更新类型,对应修改所述第一版本号,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
进一步地,所述所述服务提供方根据所述更新类型,对应修改所述第一版本号的步骤,包括:
若所述更新类型为主框架更新,则在第一版本号的第一级的数字基础之上增加1,并将第二级与第三级的数字复位为0;
若所述更新类型为新增功能,则在第一版本号的第二级的数字基础之上增加1,并将第三级的数字复位为0;
若所述更新类型为功能修正,则在第一版本号的第三级的数字基础之上增加1。
进一步地,所述滚动发布所述服务提供方的步骤之后,包括:
所述服务提供方获取滚动发布之前的第一版本号;其中,所述第一版本号包括四级;
所述服务提供方获取滚动发布时的更新内容;
所述服务提供方根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
所述服务提供方对所述更新内容进行哈希计算,得到对应的哈希值;
所述服务提供方采用预设的编码表,对所述哈希值进行编码,得到一个编码数字;
所述服务提供方根据所述更新类型,对应修改所述第一版本号的第一级、第二级以及第三级,并将所述编码数字作为所述第一版本号的第四级,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
进一步地,所述滚动发布所述服务提供方的步骤之后,包括:
所述服务调用方获取发布后的所述服务提供方;
所述服务调用方向发布后的所述服务提供方发出服务调用请求时,判断发布后的所述服务提供方是否响应所述服务调用请求;
若未响应,则将所述服务调用请求发送至预设的容器中调用发布前的所述服务提供方;其中,所述预设的容器中预先存储有发布前的所述服务提供方。
进一步地,所述滚动发布所述服务提供方的步骤,包括:
更新所述服务提供方的代码文件;
获取所述服务提供方更新后的代码文件,并根据所述更新后的代码文件,生成镜像文件;
将所述镜像文件部署至测试环境中,以测试所述镜像文件对应的微服务;
若测试无误,则将所述镜像文件部署至生产环境中进行发布。
本申请还提供了一种微服务系统,所述微服务系统中导入有openfeign SDK工具包以运行openresty平台,所述微服务系统还包括服务提供方以及服务调用方:
所述服务提供方用于将所述服务提供方在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册,并存储至服务列表中;其中,所述服务提供方为所述微服务系统中前一批滚动发布的应用;
所述服务调用方用于定时从所述微服务注册中心获取所述服务列表;其中,所述服务调用方为所述微服务系统中后一批滚动发布的应用;
所述服务调用方用于根据所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地;
所述openresty平台用于自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方。
进一步地,所述服务提供方还用于:
获取滚动发布之前的第一版本号;其中,所述第一版本号包括三级;
获取滚动发布时的更新内容;
根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
根据所述更新类型,对应修改所述第一版本号,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请提供的发布微服务应用的方法、系统、计算机设备和存储介质,应用于微服务系统,服务提供方将其在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册至服务列表中,服务调用方定时从所述微服务注册中心获取所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地,使得应用在滚动发布时,也依然可以通过openresty域名路由进行调用;同时,openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方,解决了应用滚动发布期间,转发到正在发布的微服务实例导致的服务不可用的问题。
附图说明
图1是本申请一实施例中发布微服务应用的方法步骤示意图;
图2是本申请一实施例中微服务系统结构框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例中提供了一种发布微服务应用的方法,应用于微服务系统,所述微服务系统中导入有openfeign SDK工具包以运行openresty平台,所述微服务系统还包括服务提供方以及服务调用方,所述方法包括以下步骤:
步骤S1,所述服务提供方将其在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册,并存储至服务列表中;其中,所述服务提供方为所述微服务系统中前一批滚动发布的应用;
步骤S2,服务调用方定时从所述微服务注册中心获取所述服务列表;其中,所述服务调用方为所述微服务系统中后一批滚动发布的应用;
步骤S3,所述服务调用方根据所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地;
步骤S4,所述openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方。
在本实施例中,上述方法应用于微服务系统中进行微服务应用的滚动发布。微服务系统中具有多个微服务应用,在进行应用程序的升级时,通常采用滚动发布的方式。滚动发布即每一次只升级一部分微服务应用,该部分微服务应用升级完成之后,再进行下一批微服务应用的升级。
具体地,上述微服务系统中导入有openfeign SDK工具包,以在微服务系统中搭建上openresty平台,接入openfeign组件;不需要增加额外的开发工作量,只需引入openfeign sdk包,按照用户手册添加应用配置即可。同时,openfeign也提供了服务开关,具有插拔式特点;在正常访问期间,如若用户不想用该功能,将openfeign的开关置于关闭状态即可,真正做到了可插拔式应用。其中,OpenResty是一个基于NGINX的可伸缩的Web平台,OpenResty是一个强大的Web应用服务器,Web开发人员可以使用Lua脚本语言调动Nginx支持的各种C以及Lua模块,更主要的是在性能方面,OpenResty可以快速构造出足以胜任10K以上并发连接响应的超高性能Web应用系统。
如上述步骤S1所述的,上述服务提供方为即将滚动发布的应用,其在发布时通常是无法被调用的,为了使得其在发布时仍然可以调用,可以在本地将服务提供方的ip端口路由修改为openresty域名路由。具体地,需要上述服务提供方将在openresty平台中的openresty域名作为元数据发送至微服务注册中心进行注册,注册之后保存至服务列表中。其中,上述微服务注册中心为Eureka,Eureka是基于REST服务的服务注册与发现的组件,即微服务中的注册中心。
如上述步骤S2-S3所述的,上述服务调用方为所述微服务系统中后一批滚动发布的应用,上述服务调用方若需要调用上述服务提供方中的微服务应用,则需要定时从所述微服务注册中心获取所述服务列表,并根据服务列表中注册的服务提供方的openresty域名;将本地中的服务提供方的ip端口修改为所述openresty域名,即实现了由ip端口路由,变为openresty域名路由。即便上述服务提供方处于滚动发布状态,也依然可以通过openresty域名路由进行调用。
上述服务调用方定时获取服务列表的时间间隔可以由用户自行进行配置,例如通常可以配置为1min。
如上述步骤S4所述的,所述openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方,上述openresty平台支持自动化摘除和添加微服务实例,解决了应用滚动发布期间,转发到正在发布的微服务实例导致的服务不可用的问题。在上述服务提供方滚动发布完成之后,再将微服务实例添加至生产环境中。
在本实施例中,将目前调用微服务应用时采用的ip端口路由更改为openresty域名路由,并保存在本地。本方案完全自定义转发目的地,具有开放性特性。且本方案中,避免因传统滚动发布带来的应用不可用的缺陷,试用于高可用要求很高的业务系统改善生产部署的服务可用性问题,提高系统运维效率,降低运维成本。
在一实施例中,所述滚动发布所述服务提供方的步骤S4之后,包括:
步骤S51,所述服务提供方获取所述服务提供方滚动发布之前的第一版本号;其中,所述第一版本号包括三级;
步骤S52,所述服务提供方获取所述服务提供方滚动发布时的更新内容;
步骤S53,所述服务提供方根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
步骤S54,所述服务提供方根据所述更新类型,对应修改所述第一版本号,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
在本实施例中,每个微服务应用对应有版本号,该版本号表达该微服务应用的版本状态。在一实施例中,上述第一版本号包括三级,例如V2.3.1。其中,版本号中的第一级表示主版本,第二级表示子版本,第三级表示修正版本。
因此,更新上述微服务应用的版本号时,可以获取到上述服务提供方滚动发布时的更新内容,进而根据更新内容,获取所述服务提供方的更新类型;进而根据所述更新类型,对应修改所述第一版本号,得到第二版本号。具体地,若上述微服务应用进行了大框架的更改,则可以在第一版本号的第一级的数字基础之上增加1,并将第二级与第三级的数字复位为0,得到上述第二版本号,例如V3.0.0;若上述微服务应用只是在目前的主框架之上增加了新的功能,则可以在第一版本号的第二级的数字基础之上增加1,并将第三级的数字复位为0,得到上述第二版本号,例如V2.4.0;若上述微服务应用只是在目前的功能上进行修正,则只需要在第一版本号的第三级的数字基础之上增加1,得到上述第二版本号,例如V2.3.2。根据上述版本号,则可以清楚表达出当前微服务应用的更新状态。
在另一实施例中,所述滚动发布所述服务提供方的步骤S4之后,包括:
步骤S501,所述服务提供方获取所述服务提供方滚动发布之前的第一版本号;其中,所述第一版本号包括四级;
步骤S502,所述服务提供方获取所述服务提供方滚动发布时的更新内容;
步骤S503,所述服务提供方根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
步骤S504,所述服务提供方对所述更新内容进行哈希计算,得到对应的哈希值;
步骤S505,所述服务提供方采用预设的编码表,对所述哈希值进行编码,得到一个编码数字;
步骤S506,所述服务提供方根据所述更新类型,对应修改所述第一版本号的第一级、第二级以及第三级,并将所述编码数字作为所述第一版本号的第四级,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
在本实施例中,每个微服务应用对应有版本号,该版本号表达该微服务应用的版本状态。在一实施例中,上述第一版本号包括三级,例如V2.3.1.427。其中,版本号中的第一级表示主版本,第二级表示子版本,第三级表示修正版本,第四级表示更新的具体内容。
因此,更新上述微服务应用的版本号时,可以获取到上述服务提供方滚动发布时的更新内容,进而根据更新内容,获取所述服务提供方的更新类型;进而根据所述更新类型,对应修改所述第一版本号的前三级;进一步对上述更新内容进行哈希计算,得到对应的哈希值;采用预设的编码表,对所述哈希值进行编码,得到一个编码数字。将该编码数字作为第四级,得到修改后的第二版本号。具体地,若上述微服务应用进行了大框架的更改,则可以在第一版本号的第一级的数字基础之上增加1,并将第二级与第三级的数字复位为0,例如V3.0.0;若上述微服务应用只是在目前的主框架之上增加了新的功能,则可以在第一版本号的第二级的数字基础之上增加1,并将第三级的数字复位为0,例如V2.4.0;若上述微服务应用只是在目前的功能上进行修正,则只需要在第一版本号的第三级的数字基础之上增加1,例如V2.3.2。根据上述版本号,则可以清楚表达出当前微服务应用的更新状态。
在上述基础上,上述更新内容哈希计算后编码得到的编码数字为734,则上述第二版本号为V2.3.2.734。上述第四级中为根据更新内容计算的哈希值所编码转换得到,其可以作为一个对更新内容的标识信息,也可以作为防篡改的证据信息。例如,在验证微服务的更新内容是否被篡改时,只需要再次对其进行哈希计算,并进行编码得到对应的编码数字,判断其与第四级是否相同,若相同,则未篡改。
在又一实施例中,所述滚动发布所述服务提供方的步骤S4之后,包括:
步骤S5a,所述服务调用方获取发布后的所述服务提供方;
步骤S5b,所述服务调用方向发布后的所述服务提供方发出服务调用请求时,判断发布后的所述服务提供方是否响应所述服务调用请求;
步骤S5c,若未响应,所述服务调用方则将所述服务调用请求发送至预设的容器中调用发布前的所述服务提供方;其中,所述预设的容器中预先存储有发布前的所述服务提供方。
在本实施例中,为了避免发布后的所述服务提供方不可用的问题,可以预先在一个预设的容器中存储有发布前的所述服务提供方。当服务提供方发布完成之后,所述服务调用方向发布后的所述服务提供方发出服务调用请求时,判断发布后的所述服务提供方是否响应所述服务调用请求;若未响应,则表明该发布后的所述服务提供方无法正常运行,发布时出现故障;此时,为了保障上述服务调用请求时能够得到响应,提高系统的可用性,可以将上述服务调用请求发送至预设的容器中调用发布前的所述服务提供方,从而使得上述服务调用请求可以得到响应。
在一实施例中,所述滚动发布所述服务提供方的步骤S4,包括:
步骤S401,更新所述服务提供方的代码文件;
步骤S402,获取所述服务提供方更新后的代码文件,并根据所述更新后的代码文件,生成镜像文件;
步骤S403,将所述镜像文件部署至测试环境中,以测试所述镜像文件对应的微服务;
步骤S404,若测试无误,则将所述镜像文件部署至生产环境中进行发布。
在本实施例中,提出对上述服务提供方进行发布的过程。具体地,更新所述服务提供方的代码文件,更新上述代码文件的过程可以是用户输入代码进行更新,也可以是从预设的数据库中获取需要更新的代码包,进行更新。其中,开发人员可以预先编写好代码包存储于上述预设的数据库中。
在更新上述服务提供方代码文件之后,获取更新后的代码文件,其包括服务提供方的所有代码,将更新后的代码文件,生成一个镜像文件,该镜像文件可直接运行。将上述镜像文件部署到测试环境中。在测试环境中,运行上述镜像文件,检测其是否可以正常运行,若可以,则测试无误;此时,则可以将上述镜像文件部署至生产环境中进行发布。
在一实施例中,上述发布微服务应用的方法,还包括:
将数据存储于区块链中。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
参照图2,本申请一实施例中还提供了一种微服务系统,所述微服务系统中导入有openfeign SDK工具包以运行openresty平台,所述微服务系统还包括服务提供方以及服务调用方,其中:
所述服务提供方用于将所述服务提供方在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册,并存储至服务列表中;其中,所述服务提供方为所述微服务系统中前一批滚动发布的应用;
所述服务调用方用于定时从所述微服务注册中心获取所述服务列表;其中,所述服务调用方为所述微服务系统中后一批滚动发布的应用;
所述服务调用方用于根据所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地;
所述openresty平台用于自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方。
在一实施例中,所述服务提供方还用于:
获取滚动发布之前的第一版本号;其中,所述第一版本号包括三级;
获取滚动发布时的更新内容;
根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
根据所述更新类型,对应修改所述第一版本号,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
在一实施例中,所述服务提供方根据所述更新类型,对应修改所述第一版本号,包括:
若所述更新类型为主框架更新,则在第一版本号的第一级的数字基础之上增加1,并将第二级与第三级的数字复位为0;
若所述更新类型为新增功能,则在第一版本号的第二级的数字基础之上增加1,并将第三级的数字复位为0;
若所述更新类型为功能修正,则在第一版本号的第三级的数字基础之上增加1。
在一实施例中,所述服务提供方还用于:
获取滚动发布之前的第一版本号;其中,所述第一版本号包括四级;
获取滚动发布时的更新内容;
根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
对所述更新内容进行哈希计算,得到对应的哈希值;
采用预设的编码表,对所述哈希值进行编码,得到一个编码数字;
根据所述更新类型,对应修改所述第一版本号的第一级、第二级以及第三级,并将所述编码数字作为所述第一版本号的第四级,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
在一实施例中,所述服务调用方还用于:
获取发布后的所述服务提供方;
所述服务调用方向发布后的所述服务提供方发出服务调用请求时,判断发布后的所述服务提供方是否响应所述服务调用请求;
若未响应,所述服务调用方则将所述服务调用请求发送至预设的容器中调用发布前的所述服务提供方;其中,所述预设的容器中预先存储有发布前的所述服务提供方。
在一实施例中,所述openresty平台滚动发布所述服务提供方,包括:
更新所述服务提供方的代码文件;
获取所述服务提供方更新后的代码文件,并根据所述更新后的代码文件,生成镜像文件;
将所述镜像文件部署至测试环境中,以测试所述镜像文件对应的微服务;
若测试无误,则将所述镜像文件部署至生产环境中进行发布。
在本实施例中,上述微服务系统具体实现,请参照上述方法实施例中所述,在此不再进行赘述。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储微服务应用的数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种发布微服务应用的方法。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种发布微服务应用的方法。可以理解的是,本实施例中的计算机可读存储介质可以是易失性可读存储介质,也可以为非易失性可读存储介质。
综上所述,为本申请实施例中提供的发布微服务应用的方法、系统、计算机设备和存储介质,应用于微服务系统,基于服务提供方将其在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册至服务列表中,再基于服务调用方定时从所述微服务注册中心获取所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地,使得应用在滚动发布时,也依然可以通过openresty域名路由进行调用;同时,基于openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方,解决了应用滚动发布期间,转发到正在发布的微服务实例导致的服务不可用的问题。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、系统、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、系统、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、系统、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种发布微服务应用的方法,应用于微服务系统,所述微服务系统中导入有openfeign SDK工具包以运行openresty平台,所述微服务系统还包括服务提供方以及服务调用方,其特征在于,所述方法包括以下步骤:
所述服务提供方将所述服务提供方在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册,并存储至服务列表中;其中,所述服务提供方为所述微服务系统中前一批滚动发布的应用;
服务调用方定时从所述微服务注册中心获取所述服务列表;其中,所述服务调用方为所述微服务系统中后一批滚动发布的应用;
所述服务调用方根据所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地;
所述openresty平台自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方。
2.根据权利要求1所述的发布微服务应用的方法,其特征在于,所述滚动发布所述服务提供方的步骤之后,包括:
所述服务提供方获取滚动发布之前的第一版本号;其中,所述第一版本号包括三级;
所述服务提供方获取滚动发布时的更新内容;
所述服务提供方根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
所述服务提供方根据所述更新类型,对应修改所述第一版本号,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
3.根据权利要求1所述的发布微服务应用的方法,其特征在于,所述所述服务提供方根据所述更新类型,对应修改所述第一版本号的步骤,包括:
若所述更新类型为主框架更新,则在第一版本号的第一级的数字基础之上增加1,并将第二级与第三级的数字复位为0;
若所述更新类型为新增功能,则在第一版本号的第二级的数字基础之上增加1,并将第三级的数字复位为0;
若所述更新类型为功能修正,则在第一版本号的第三级的数字基础之上增加1。
4.根据权利要求1所述的发布微服务应用的方法,其特征在于,所述滚动发布所述服务提供方的步骤之后,包括:
所述服务提供方获取滚动发布之前的第一版本号;其中,所述第一版本号包括四级;
所述服务提供方获取滚动发布时的更新内容;
所述服务提供方根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
所述服务提供方对所述更新内容进行哈希计算,得到对应的哈希值;
所述服务提供方采用预设的编码表,对所述哈希值进行编码,得到一个编码数字;
所述服务提供方根据所述更新类型,对应修改所述第一版本号的第一级、第二级以及第三级,并将所述编码数字作为所述第一版本号的第四级,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
5.根据权利要求1所述的发布微服务应用的方法,其特征在于,所述滚动发布所述服务提供方的步骤之后,包括:
所述服务调用方获取发布后的所述服务提供方;
所述服务调用方向发布后的所述服务提供方发出服务调用请求时,判断发布后的所述服务提供方是否响应所述服务调用请求;
若未响应,所述服务调用方则将所述服务调用请求发送至预设的容器中调用发布前的所述服务提供方;其中,所述预设的容器中预先存储有发布前的所述服务提供方。
6.根据权利要求1所述的发布微服务应用的方法,其特征在于,所述滚动发布所述服务提供方的步骤,包括:
更新所述服务提供方的代码文件;
获取所述服务提供方更新后的代码文件,并根据所述更新后的代码文件,生成镜像文件;
将所述镜像文件部署至测试环境中,以测试所述镜像文件对应的微服务;
若测试无误,则将所述镜像文件部署至生产环境中进行发布。
7.一种微服务系统,所述微服务系统中导入有openfeign SDK工具包以运行openresty平台,所述微服务系统还包括服务提供方以及服务调用方,其特征在于:
所述服务提供方用于将所述服务提供方在openresty平台中的openresty域名作为元数据发送至微服务注册中心注册,并存储至服务列表中;其中,所述服务提供方为所述微服务系统中前一批滚动发布的应用;
所述服务调用方用于定时从所述微服务注册中心获取所述服务列表;其中,所述服务调用方为所述微服务系统中后一批滚动发布的应用;
所述服务调用方用于根据所述服务列表,将所述服务提供方的ip端口修改为所述openresty域名,并保存在所述微服务系统的本地;
所述openresty平台用于自动摘除所述服务提供方的微服务实例,并滚动发布所述服务提供方。
8.根据权利要求7所述的微服务系统,其特征在于,所述服务提供方还用于:
获取滚动发布之前的第一版本号;其中,所述第一版本号包括三级;
获取滚动发布时的更新内容;
根据所述更新内容对应的更新功能,获取所述服务提供方的更新类型;所述更新类型包括主框架更新、新增功能以及功能修正;
根据所述更新类型,对应修改所述第一版本号,得到第二版本号,作为所述服务提供方滚动发布之后的版本号。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202110212480.8A 2021-02-25 2021-02-25 发布微服务应用的方法、系统、计算机设备和存储介质 Pending CN112905229A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110212480.8A CN112905229A (zh) 2021-02-25 2021-02-25 发布微服务应用的方法、系统、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110212480.8A CN112905229A (zh) 2021-02-25 2021-02-25 发布微服务应用的方法、系统、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN112905229A true CN112905229A (zh) 2021-06-04

Family

ID=76108460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110212480.8A Pending CN112905229A (zh) 2021-02-25 2021-02-25 发布微服务应用的方法、系统、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN112905229A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032393A (zh) * 2019-04-18 2019-07-19 恒生电子股份有限公司 一种微服务发布方法、装置、设备及介质
CN110928709A (zh) * 2019-11-21 2020-03-27 中国民航信息网络股份有限公司 一种微服务框架下的服务调用方法、装置及服务器
CN112130880A (zh) * 2020-09-27 2020-12-25 平安医疗健康管理股份有限公司 微服务的发布方法、装置、计算机设备及存储介质
CN112306527A (zh) * 2020-10-30 2021-02-02 中国平安财产保险股份有限公司 服务器升级方法、装置、计算机设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110032393A (zh) * 2019-04-18 2019-07-19 恒生电子股份有限公司 一种微服务发布方法、装置、设备及介质
CN110928709A (zh) * 2019-11-21 2020-03-27 中国民航信息网络股份有限公司 一种微服务框架下的服务调用方法、装置及服务器
CN112130880A (zh) * 2020-09-27 2020-12-25 平安医疗健康管理股份有限公司 微服务的发布方法、装置、计算机设备及存储介质
CN112306527A (zh) * 2020-10-30 2021-02-02 中国平安财产保险股份有限公司 服务器升级方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN108365993B (zh) 区块链节点动态变更方法、系统和计算机可读存储介质
CN112087325B (zh) 灰度发布方法、装置、设备及可读存储介质
CN111373366A (zh) 生成和部署机器学习模型软件包
CN109885612B (zh) 区块链智能合约的同步生效方法及装置
CN111338706B (zh) 配置文件的导入方法、装置、设备及计算机可读存储介质
CN108664343B (zh) 一种微服务的有状态调用方法及装置
CN112231054B (zh) 基于k8s集群的多模型推理服务部署方法及装置
CN110532025A (zh) 基于微服务架构的数据处理方法、装置、设备及存储介质
CN110597918A (zh) 一种账户管理方法、装置及计算机可读存储介质
CN107835228A (zh) 一种基于动态广义路由的指令处理方法及装置
CN111143023A (zh) 一种资源变更的方法及装置、设备、存储介质
CN112702195A (zh) 网关配置方法、电子设备及计算机可读存储介质
CN112579319A (zh) 一种基于LRU Cache优化的服务调用方法及装置
CN112905229A (zh) 发布微服务应用的方法、系统、计算机设备和存储介质
CN111414181B (zh) 网络产品的服务升级方法、装置、服务器及存储介质
CN109859038B (zh) 一种区块链智能合约的生效方法及装置
US9058313B2 (en) Test method for distributed processing system and distributed processing system
CN110489090B (zh) 一种基于应用模型的应用软件开发方法及系统
CN111651469B (zh) 一种管理区块链系统合约的方法和装置
CN106648870A (zh) 一种服务的重启方法和装置
CN114221996A (zh) 一种服务调用方法、装置、电子设备、存储介质
JP2011257994A (ja) 更新api検出システム、更新api検出装置、更新api検出方法、および更新api検出プログラム
CN110825406A (zh) 一种软件升级的方法及相关设备
CN112541756B (zh) 区块链合约升级方法、装置、计算机设备及可读存储介质
CN114884673B (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