CN114265607A - 一种灰度发布方法、系统、电子设备和存储介质 - Google Patents

一种灰度发布方法、系统、电子设备和存储介质 Download PDF

Info

Publication number
CN114265607A
CN114265607A CN202210201616.XA CN202210201616A CN114265607A CN 114265607 A CN114265607 A CN 114265607A CN 202210201616 A CN202210201616 A CN 202210201616A CN 114265607 A CN114265607 A CN 114265607A
Authority
CN
China
Prior art keywords
micro
api
service instance
service
apis
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.)
Granted
Application number
CN202210201616.XA
Other languages
English (en)
Other versions
CN114265607B (zh
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.)
Softtek Intelligent Computing Technology Guangdong Group Co ltd
Original Assignee
Hangzhou Langche Technology 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 Hangzhou Langche Technology Co ltd filed Critical Hangzhou Langche Technology Co ltd
Priority to CN202210201616.XA priority Critical patent/CN114265607B/zh
Publication of CN114265607A publication Critical patent/CN114265607A/zh
Application granted granted Critical
Publication of CN114265607B publication Critical patent/CN114265607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请涉及一种灰度发布方法,其中,该方法包括:灰度发布控制器针对集群中的一个目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,API采用OpenAPI规范暴露;基于API的实时对比结果生成路由规则表,并将路由规则表发送至集群内各个微服务的代理控制器;指示代理控制器,根据路由规则表,将目标微服务之外的其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。本申请通过API层级的灰度发布,解决了现有技术中微服务灰度发布方法安全性较差的问题,降低了发布风险。

Description

一种灰度发布方法、系统、电子设备和存储介质
技术领域
本申请涉及云计算技术领域,特别是涉及一种灰度发布方法、系统、电子设备和存储介质。
背景技术
目前,在软件更新迭代过程中,通常采用蓝绿部署和灰度发布。在对某个微服务进行灰度发布的过程中,老版本不下线,在服务器集群中部署微服务新版本,而后系统需要调整其他微服务的路由规则,对发往灰度发布中的微服务请求进行新老版本的分流,并在过程中不断测试,在测试符合预期的情况下,再将所有流量调整到新版本,在发布成功后下线老版本,从而降低了版本更新的风险。
但是,现有灰度发布方式仅涉及到应用层的灰度发布,即按照预设的分流规则将流量逐步从老版本软件分流到新版本软件上,但是,这种方式仍然存在较大的风险。
发明内容
本申请实施例提供了一种灰度发布方法、系统、电子设备和计算机可读存储介质,以至少解决相关技术中灰度发布方法安全性较低的问题。
第一方面,本申请提供了一种灰度发布方法,所述方法包括:
灰度发布控制器针对集群中的目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,所述API采用OpenAPI规范暴露文档;
基于API的实时对比结果生成路由规则表,并将所述路由规则表发送至集群内各个微服务的代理控制器;
指示所述代理控制器,根据所述路由规则表,将所述目标微服务之外其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。
在其中一些实施例中,所述代理控制器的访问请求转发流程包括:
判断所述访问请求中的请求对象域名与所述路由规则表中目标微服务的域名是否匹配;
若是,通过访问请求中的访问路径在API字典中查询以确定转发规则,并根据所述转发规则,将所述访问请求转发至新版本微服务实例的API和/或老版本微服务实例的API。
在其中一些实施例中,所述转发规则包括:
对于新版本和老版本中发生变化的API:采用渐进式流量倾斜方式,依据预设迁移步长,将访问流量逐步从所述老版本微服务实例的API分流到所述新版本微服务实例的API;
对于新版本和老版本中未发生变化的API,根据1:1的预设比例,将访问流量从所述老版本微服务实例的API分流到所述新版本微服务实例的API;
对于新版本相对于老版本被删除的API,将访问流量分流至所述老版本微服务实例的API。
在其中一些实施例中,所述方法还包括:
根据预设校验规则,对已在集群中运行的新版本微服务实例进行实时测试;
若测试结果指示合格,持续将访问流量逐步倾斜至新版本微服务实例,并在所有访问流量倾斜完成之后,输出发布成功信号;
若测试结果指示不合格,将访问流量逐步倾斜至老版本微服务实例,并在所有访问流量倾斜完成之后,输出发布失败信号。
在其中一些实施例中,所述方法还包括:
在输出所述发布成功信号的情况下,在所述集群中下线所述老版本微服务实例;
在输出所述发布失败信号的情况下,修复当前的软件BUG和/或测试BUG之后,重新发布所述新版本微服务实例。
在其中一些实施例中,在所述集群是云服务器集群时,所述代理控制器以sidecar形式在各个微服务所在的网络节点上部署;
在所述集群是传统物理服务器集群时,所述代理控制器以网关的形式在各个微服务所在的物理服务器上部署。
在其中一些实施例中,所述集群部署在kubernetes云平台上。
第二方面,本申请提供了一种灰度发布系统,所述系统包括:收集对比模块、路由规则表生成模块和请求转发模块,其中:
所述收集对比模块用于:通过灰度发布控制器针对集群中的目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,所述API采用OpenAPI规范暴露文档;
所述路由规则表生成模块用于:基于API的实时对比结果生成路由规则表,并将所述路由规则表发送至集群内各个微服务的代理控制器;
所述请求转发模块用于:通过所述代理控制器,根据所述路由规则表,将所述目标微服务之外其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的灰度发布方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的灰度发布方法。
相比于相关技术,本申请实施例提供的灰度发布方法,通过将新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比(API采用OpenAPI规范暴露),基于API的对比结果生成实时路由规则表。进一步的,指示其他微服务的代理控制器,根据路由规则表,将各自微服务的访问请求转发至新版本和/或老版本的微服务实例的API。从而可以实现API级别的灰度发布,相比较于传统技术中的应用级灰度发布,本申请技术方案更进一步的降低了灰度发布的风险,提升了版本更新时的安全性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图 1是根据本申请实施例的一种灰度发布方法的应用环境示意图;
图2是根据本申请实施例的一种灰度发布方法的流程图;
图3是传统应用层级灰度发布方式的示意图;
图4是根据本申请实施例的API层级灰度发布方式的示意图;
图5是根据本申请实施例的一种灰度发布方法的结构框图;
图6是根据本申请实施例的一种灰度发布系统的架构示意图;
图7是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请提供的一种灰度发布方法,可以应用在如图1所示的应用环境中,图 1是根据本申请实施例的一种灰度发布方法的应用环境示意图。如图1所示,集群由多个微服务10组成,其中,每个微服务10中运行一个微服务实例(相当于一个软件应用),进一步的,每个微服务实例中提供有多个功能接口(即API)。通过本申请提供的灰度发布方法,可以版本升级时实现API层级的灰度发布,相比较传统方式采用软件层级的灰度发布,本申请可以将软件升级的风险降到更低。需要说明的是,本申请的服务器集群可以是云服务器集群,也可以是线下场景的物理服务器组成的集群。
本申请提供了一种灰度发布方法,图2是根据本申请实施例的一种灰度发布方法的流程图,如图2所示,该流程包括如下步骤:
S201,灰度发布控制器针对集群中的目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,API采用OpenAPI规范暴露文档;
其中,集群中同时存在多个微服务,上述目标微服务即为参与灰度发布的微服务。当然,在灰度发布控制器收集上述API之前,用户已将新版本的微服务实例部署在集群中。
需要说明的是,上述OpenAPI规范是一种通用的、和编程语言无关的 API 描述规范,其作用是使人类和计算机都可以发现和理解服务的功能,而无需访问源代码、文档或针对接口进行嗅探,在openAPI正确定义后,使用者可以使用最少的实现逻辑来理解远程服务并与之交互。
在本实施例中,正是基于各个API都采用OpenAPI规范暴露了文档这个前置条件,因此,可以将新版本微服务实例的API与老版本微服务实例的API进行对比,从而判断两个版本中具体是哪些接口发生了改变。
需要说明的是,对于如何定义微服务的API,这是本领域的常规技术手段且对本方案的发明点并无核心影响,因此在本实施例中不再赘述。
S202,基于API的实时对比结果生成路由规则表,并将路由规则表发送至集群内各个微服务的代理控制器;
其中,API对比的结果包括但不限于是:新版本相对于老版本加入了部分API,新版本中删除了老版本中部分API,新版本中API的一些参数发生变化等。
进一步的,路由规则表中包括如下参数:新/老版本目标微服务实例的域名、微服务的域名、访问请求流量转发路径、以及访问流量分别转发至老版本或新版本的权重参数等。
举例如下:老版本的服务域名为SVC-C-V1,新版本的服务域名为SVC-C-V2,其他微服务访问微服务C的域名为则 Service-C。
本实施例中,即每个微服务都设置有一个独立的代理控制器,通过该代理控制器可以接收存储上述定义好的路由规则表,进一步的,还可以拦截各个微服务发出的请求,并根据该路由规则表决定该请求的转发路径,例如,在新老版本中某个API参数变动时,决定将5%的访问请求发送至新版本微服务实例的API,将剩余95%的访问请求发送至老版本微服务实例的API。
S203,指示代理控制器,根据路由规则表,将目标微服务之外其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。
由于上述步骤S202中已定义好路由规则表并设置代理控制器,因此,集群内其他微服务发出的与目标微服务交互的请求,都将被代理控制器拦截,经代理控制器依据路由规则表处理之后,再将其转发至新版本实例中某个API或老版本实例中某个API。
因此,当新版本微服务实例相对于老版本微服务实例,某个API(记为API-1)发生变更时,其他微服务的访问请求将按照一定的百分比从老版本的API-1上分流至新版本的API-1上。而传统方式,则不会考虑具体的API变动,而是在软件整体层面直接进行分流,即发布时发往老版本的流量被分流至新版本的所有API,这种方式显然会导致更大的风险。另外,若新版本微服务实例只做了较小改动,例如,改动了其中某一项API的具体参数,采用传统方式的整体灰度发布方式,相对于本申请的API层级灰度发布方式,将很大程度的增加升级风险,并且还会导致额外的流量消耗,
通过上述步骤S201至S203,相比较于相关技术中应用级的灰度发布方法,本申请基于各个API采用OpenAPI规范设计这个前置条件,通过对新老版本的API进行对比,从而确定哪些API因为版本更新发生了改变,进一步的,再通过代理控制器将其他微服务的访问请求,按照基于API对比得到的路由规则表,从老版本的API分流到新版本的API。从而将灰度发布的风险降到更低,相比较于传统方式具备更高的安全性。
在其中一些实施例中,代理控制器的访问请求转发流程包括:
判断访问请求中的请求对象域名与路由规则表中目标微服务名称是否匹配;即相当于,判断微服务发送的访问请求是不是针对正在版本更新的目标微服务的。
进一步的,若是,基于访问请求中的访问路径在API字典中查询以确定转发规则;其中,该字典的键为API 全路径,值为后端服务转发权重表,每个访问路径可以匹配到对应的转发权重规则。
根据转发权重规则,将访问请求转发至新版本微服务实例的API和/或老版本微服务实例API,具体包括:
1.对于新版本和老版本中发生变化的API,采用渐进式流量倾斜方式,依据预设迁移步长,将访问流量逐步从老版本微服务实例的API分流到新版本微服务实例的API;
具体API变动包括:API的参数发生变化(即修改了软件的某项具体功能),API的访问路径发生变化(增加或删除了API)等。
其中,具体一个API的变化如下表1所示:
Figure 234966DEST_PATH_IMAGE001
进一步的,上述渐进式流量倾斜方式,即根据用户自定义的迁移步长(百分比),将老版本API的流量逐步分批次的转移到新版本的API上。
2.对于新版本和老版本中未发生变化的API,根据1:1的预设比例,将访问流量从老版本微服务实例的API分流到新版本微服务实例的API;
3.对于新版本中被删除的API,将访问流量全部分流至老版本微服务实例的API。
在其中一些实施例中,为了保障版本的顺利更新,在将流量逐步向新版本倾斜的过程中,需要对新版本微服务实例的运行状态进行实时校验测试,即通过预先设置的灰度发布校验规则进行实时校验;
如果测试符合预期结果,将持续将访问流量倾斜至新版本微服务实例上,最终流量会全部倾斜到新版本微服务实例,灰度发布控制器将输出发布成功信号反馈给用户。同时,老版本微服务实例将被下线,此后由全部由新版本微服务实例对外提供服务。
如果测试不符合预期结果,则流量全部倾斜到老版本微服务实例。进一步的,则需要开发人员确定是微服务实例的软件bug导致发布失败,或是测试规则设计错误导致发布失败。
若因为微服务软件bug导致发布失败,则将修复之后的新版本微服务实例重新部署在集群中,再执行上述步骤S201至S203,并同步进行校验侧即可;
若因为测试规则设置错误导致发布失败,则修复上述预设灰度发布校验规之后,并重新发布测试。
在其中一些实施例中,本申请提供的灰度发布方法可以应用在云服务器上,也可以应用在传统的物理服务器之上,当应用在云服务器集群时(例如kubernetes云平台),代理控制器以sidecar形式在各个微服务所在的网络节点上一起部署;
在集群是传统物理服务器集群时,代理控制器以网关的形式在各个微服务所在的物理服务器上部署。
图3是传统应用层级灰度发布方式的示意图,图4是根据本申请实施例的API层级灰度发布方式的示意图,如图3、图4所示:
本申请方案基于灰度发布思想,将流量逐个从老版本应用的API分流到新版本应用的API之上,现有技术中,则是直接整个应用全部流量从老版本分流到新版本上。本领域技术人员可以明显获知:本申请方案相比于现有方式,具有更高的安全性。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种灰度发布系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的一种灰度发布方法的结构框图,如图5所示,该系统包括:收集对比模块50、路由规则表生成模块51和请求转发模块52,其中:
收集对比模块50用于:通过灰度发布控制器针对集群中的一个目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,API采用OpenAPI规范暴露;
路由规则表生成模块51:基于API的实时对比结果生成路由规则表,并将路由规则表发送至集群内各个微服务的代理控制器;
请求转发模块52:通过代理控制器,根据路由规则表,将目标微服务之外的其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。
图6是根据本申请实施例的一种灰度发布系统的架构示意图,如图6所示,灰度发布控制器收集参与灰度发布的微服务实例C的API:包括老版本C-V1和新版本C-V2的API。此后,通过将两者的API进行对比,可以确定哪些其中具体哪些API发生变动,并根据对比的结果生成路由规则表。
进一步的,通过代理控制器拦截其他微服务发出的访问请求,这些请求经代理控制器处理后,将按照路由规则表中的转发逻辑进行转发。其中,以本申请方案在kubernetes中部署为例,图6中微服务C包括,工作负载(deployment ),服务域名(service)和代理控制器,代理控制器以sidecar的形式和微服务一起部署。假设版本的服务域名为SVC-C-V1,新版本的服务域名为SVC-C-V2,其他微服务访问微服务C的域名为 Service-C。如果微服务A的代理控制器发现有向Service-C访问的请求,则会拦截,并进一步的查询路由规则表之后,对该访问请求进行转发。从而当新老版本中某些发生API变动时,将发往老版本API的流量分流至新版本的API之上。从而实现了API层级的灰度发布,降低了版本更新的风险。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种灰度发布方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图7是根据本申请实施例的电子设备的内部结构示意图,如图7所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图7所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种灰度发布方法,数据库用于存储数据。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种灰度发布方法,其特征在于,所述方法包括:
灰度发布控制器针对集群中的目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,所述API采用OpenAPI规范暴露文档;
基于API的实时对比结果生成路由规则表,并将所述路由规则表发送至集群内各个微服务的代理控制器;
指示所述代理控制器,根据所述路由规则表,将所述目标微服务之外其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。
2.根据权利要求1所述的方法,其特征在于,所述代理控制器的访问请求转发流程包括:
判断所述访问请求中的请求对象域名与所述路由规则表中目标微服务的域名是否匹配;
若是,通过访问请求中的访问路径在API字典中查询以确定转发规则,并根据所述转发规则,将所述访问请求转发至新版本微服务实例的API和/或老版本微服务实例的API。
3.根据权利要求2所述的方法,其特征在于,所述转发规则包括:
对于新版本和老版本中发生变化的API:采用渐进式流量倾斜方式,依据预设迁移步长,将访问流量逐步从所述老版本微服务实例的API分流到所述新版本微服务实例的API;
对于新版本和老版本中未发生变化的API,根据1:1的预设比例,将访问流量从所述老版本微服务实例的API分流到所述新版本微服务实例的API;
对于新版本相对于老版本被删除的API,将访问流量全部分流至所述老版本微服务实例的API。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据预设校验规则,对已在集群中运行的新版本微服务实例进行实时测试;
若测试结果指示合格,持续将访问流量逐步倾斜至新版本微服务实例,并在所有访问流量倾斜完成之后,输出发布成功信号;
若测试结果指示不合格,将访问流量逐步倾斜至老版本微服务实例,并在所有访问流量倾斜完成之后,输出发布失败信号。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在输出所述发布成功信号的情况下,在所述集群中下线所述老版本微服务实例;
在输出所述发布失败信号的情况下,修复当前的软件BUG和/或测试BUG之后,重新发布所述新版本微服务实例。
6.根据权利要求1所述的方法,其特征在于,
在所述集群是云服务器集群时,所述代理控制器以sidecar形式在各个微服务所在的网络节点上部署;
在所述集群是传统物理服务器集群时,所述代理控制器以网关的形式在各个微服务所在的物理服务器上部署。
7.根据权利要求1所述的方法,其特征在于,所述集群部署在kubernetes云平台上。
8.一种灰度发布系统,其特征在于,所述系统包括:收集对比模块、路由规则表生成模块和请求转发模块,其中:
所述收集对比模块用于:通过灰度发布控制器针对集群中的目标微服务,收集新版本微服务实例的所有API和老版本微服务实例的所有API并进行对比,其中,所述API采用OpenAPI规范暴露文档;
所述路由规则表生成模块用于:基于API的实时对比结果生成路由规则表,并将所述路由规则表发送至集群内各个微服务的代理控制器;
所述请求转发模块用于:通过所述代理控制器,根据所述路由规则表,将所述目标微服务之外其他微服务生成的访问请求,转发至新版本微服务实例的API和/或老版本微服务实例的API。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的灰度发布方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一项所述的灰度发布方法。
CN202210201616.XA 2022-03-03 2022-03-03 一种灰度发布方法、系统、电子设备和存储介质 Active CN114265607B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210201616.XA CN114265607B (zh) 2022-03-03 2022-03-03 一种灰度发布方法、系统、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210201616.XA CN114265607B (zh) 2022-03-03 2022-03-03 一种灰度发布方法、系统、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN114265607A true CN114265607A (zh) 2022-04-01
CN114265607B CN114265607B (zh) 2022-06-28

Family

ID=80833836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210201616.XA Active CN114265607B (zh) 2022-03-03 2022-03-03 一种灰度发布方法、系统、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114265607B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578335A (zh) * 2023-07-13 2023-08-11 建信金融科技有限责任公司 灰度发布系统、方法、设备、介质及产品
CN117215596A (zh) * 2023-08-02 2023-12-12 广州优谷信息技术有限公司 基于Helm的灰度发布方法、装置、电子设备及介质
WO2024078025A1 (zh) * 2022-10-10 2024-04-18 华为技术有限公司 流量隔离方法、装置、系统及计算机可读存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109672612A (zh) * 2018-12-13 2019-04-23 中国电子科技集团公司电子科学研究院 Api网关系统
CN109756448A (zh) * 2017-11-02 2019-05-14 广东亿迅科技有限公司 基于微服务的api网关安全管理方法及其系统
CN110874227A (zh) * 2018-08-29 2020-03-10 京东数字科技控股有限公司 实现于api网关的灰度发布的分流方法、系统和电子设备
US20200112487A1 (en) * 2018-10-05 2020-04-09 Cisco Technology, Inc. Canary release validation mechanisms for a containerized application or service mesh
US20200159591A1 (en) * 2018-11-16 2020-05-21 International Business Machines Corporation Application program interface based service lookup in a service architecture
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
US10791044B1 (en) * 2019-03-29 2020-09-29 Oracle International Corporation Methods, system, and computer readable media for handling multiple versions of same service provided by producer network functions (NFs)
CN112073320A (zh) * 2020-11-12 2020-12-11 深圳壹账通智能科技有限公司 基于云网关的api灰度发布方法、装置及计算机设备
CN112333096A (zh) * 2020-10-16 2021-02-05 济南浪潮数据技术有限公司 一种微服务流量调度方法及相关组件
CN112506587A (zh) * 2020-11-26 2021-03-16 杭州朗澈科技有限公司 Api部署监控的方法、系统、电子装置和存储介质
CN113037830A (zh) * 2021-03-04 2021-06-25 浪潮云信息技术股份公司 基于网关的微服务api编排方法及系统
CN113242281A (zh) * 2021-04-26 2021-08-10 微梦创科网络科技(中国)有限公司 一种灰度发布方法、装置、设备及存储介质
CN113934444A (zh) * 2021-10-21 2022-01-14 北京沃东天骏信息技术有限公司 灰度发布方法、装置、计算机存储介质和电子设备
WO2022037272A1 (zh) * 2020-08-21 2022-02-24 烽火通信科技股份有限公司 灰度发布方法、装置、设备及可读存储介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109756448A (zh) * 2017-11-02 2019-05-14 广东亿迅科技有限公司 基于微服务的api网关安全管理方法及其系统
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
CN110874227A (zh) * 2018-08-29 2020-03-10 京东数字科技控股有限公司 实现于api网关的灰度发布的分流方法、系统和电子设备
US20200112487A1 (en) * 2018-10-05 2020-04-09 Cisco Technology, Inc. Canary release validation mechanisms for a containerized application or service mesh
US20200159591A1 (en) * 2018-11-16 2020-05-21 International Business Machines Corporation Application program interface based service lookup in a service architecture
CN109672612A (zh) * 2018-12-13 2019-04-23 中国电子科技集团公司电子科学研究院 Api网关系统
US10791044B1 (en) * 2019-03-29 2020-09-29 Oracle International Corporation Methods, system, and computer readable media for handling multiple versions of same service provided by producer network functions (NFs)
WO2022037272A1 (zh) * 2020-08-21 2022-02-24 烽火通信科技股份有限公司 灰度发布方法、装置、设备及可读存储介质
CN112333096A (zh) * 2020-10-16 2021-02-05 济南浪潮数据技术有限公司 一种微服务流量调度方法及相关组件
CN112073320A (zh) * 2020-11-12 2020-12-11 深圳壹账通智能科技有限公司 基于云网关的api灰度发布方法、装置及计算机设备
CN112506587A (zh) * 2020-11-26 2021-03-16 杭州朗澈科技有限公司 Api部署监控的方法、系统、电子装置和存储介质
CN113037830A (zh) * 2021-03-04 2021-06-25 浪潮云信息技术股份公司 基于网关的微服务api编排方法及系统
CN113242281A (zh) * 2021-04-26 2021-08-10 微梦创科网络科技(中国)有限公司 一种灰度发布方法、装置、设备及存储介质
CN113934444A (zh) * 2021-10-21 2022-01-14 北京沃东天骏信息技术有限公司 灰度发布方法、装置、计算机存储介质和电子设备

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
APITCHAKA SINGJAI: "Practitioner Views on the Interrelation of Microservice APIs and Domain-Driven Design: A Grey Literature Study Based on Grounded Theory", 《2021 IEEE 18TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE (ICSA)》 *
APITCHAKA SINGJAI: "Practitioner Views on the Interrelation of Microservice APIs and Domain-Driven Design: A Grey Literature Study Based on Grounded Theory", 《2021 IEEE 18TH INTERNATIONAL CONFERENCE ON SOFTWARE ARCHITECTURE (ICSA)》, 11 May 2021 (2021-05-11), pages 25 - 34 *
陶承: "基于微服务架构的铁路招标采购管理系统研究与设计", 《铁路计算机应用》 *
陶承: "基于微服务架构的铁路招标采购管理系统研究与设计", 《铁路计算机应用》, 28 February 2019 (2019-02-28), pages 49 - 55 *
黄强文等: "基于Spring Cloud和Docker的分布式微服务架构设计", 《微型电脑应用》, no. 06, 14 June 2019 (2019-06-14) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024078025A1 (zh) * 2022-10-10 2024-04-18 华为技术有限公司 流量隔离方法、装置、系统及计算机可读存储介质
CN116578335A (zh) * 2023-07-13 2023-08-11 建信金融科技有限责任公司 灰度发布系统、方法、设备、介质及产品
CN116578335B (zh) * 2023-07-13 2023-10-03 建信金融科技有限责任公司 灰度发布系统、方法、设备、介质及产品
CN117215596A (zh) * 2023-08-02 2023-12-12 广州优谷信息技术有限公司 基于Helm的灰度发布方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN114265607B (zh) 2022-06-28

Similar Documents

Publication Publication Date Title
CN114265607B (zh) 一种灰度发布方法、系统、电子设备和存储介质
CN110162382B (zh) 基于容器的灰度发布方法、装置、计算机设备及存储介质
CN112000348B (zh) 服务灰度发布的控制方法、装置、计算机设备
US11204751B2 (en) Mitigating incompatibilities due to code updates in a system containing multiple networked electronic control units
CN107844400B (zh) 一种日志数据的校验方法及装置
US10694353B2 (en) Updating web resources
CN106027644B (zh) 一种业务的校验方法及系统
US20050204353A1 (en) Upgrading electronic files of a mobile device upgrade client
US20130198313A1 (en) Using entity tags (etags) in a hierarchical http proxy cache to reduce network traffic
CN109857423A (zh) 程序版本更新方法、装置、服务器及可读存储介质
US11018860B2 (en) Highly available and reliable secret distribution infrastructure
CN111416836B (zh) 基于Nginx的服务器维护方法、装置、计算机设备及存储介质
CN110765394A (zh) so文件加载方法、装置、存储介质及终端设备
CN111090442B (zh) 一种应用更新方法、装置和存储介质
US20160048774A1 (en) Method and apparatus for localized management of feature licenses
CN113076248B (zh) 一种应用处理方法、装置、设备及可读存储介质
CN111654379B (zh) 多服务器的统一令牌生成方法及认证方法
CN110119388B (zh) 文件读写方法、装置、系统、设备及计算机可读存储介质
CN111404897A (zh) 消息分发方法、装置、存储介质及电子设备
CN109684026B (zh) App皮肤更换方法、装置、电子设备及存储介质
CN115396221A (zh) 授权处理方法及装置、系统、电子设备及存储介质
CN112559012B (zh) 系统升级及测试方法、装置、计算机设备及可读存储介质
CN107135430A (zh) 一种用于界面排版更新的处理系统
CN114064100A (zh) 配置信息处理方法、系统和装置
CN110196724B (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220802

Address after: 100094 Room 502, floor 5, building 16, East District, yard 10, northwest Wangdong Road, Haidian District, Beijing

Patentee after: Softcom power information technology (Group) Co.,Ltd.

Address before: 311100 Room 802, building 12, 1818-2, Wenyi West Road, Yuhang street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee before: HANGZHOU LANGCHE TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220829

Address after: 518000 floor 2-24, building a, Zhongshe Plaza, No.1028, Buji Road, Dongxiao street, Luohu District, Shenzhen City, Guangdong Province

Patentee after: Shenzhen Softcom Power Information Technology Co.,Ltd.

Address before: 100094 Room 502, floor 5, building 16, East District, yard 10, northwest Wangdong Road, Haidian District, Beijing

Patentee before: Softcom power information technology (Group) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240813

Address after: Unit 1625, North Building 1, No. 195 Linlin Middle Road, Huangpu District, Guangzhou City, Guangdong Province 510000

Patentee after: Softtek Intelligent Computing Technology (Guangdong) Group Co.,Ltd.

Country or region after: China

Address before: 518000 floor 2-24, building a, Zhongshe Plaza, No.1028, Buji Road, Dongxiao street, Luohu District, Shenzhen City, Guangdong Province

Patentee before: Shenzhen Softcom Power Information Technology Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right