CN114422440A - 灰度发布方法、装置、电子设备及存储介质 - Google Patents
灰度发布方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114422440A CN114422440A CN202210308641.8A CN202210308641A CN114422440A CN 114422440 A CN114422440 A CN 114422440A CN 202210308641 A CN202210308641 A CN 202210308641A CN 114422440 A CN114422440 A CN 114422440A
- Authority
- CN
- China
- Prior art keywords
- tenant
- traffic
- gray scale
- kong
- target tenant
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种灰度发布方法、装置、电子设备及存储介质,所述方法包括:通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;基于所述Kong API网关的日志,确定流量分配规则;基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。本发明通过在Kong API网关层面实现对租户的识别,并对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
Description
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种灰度发布方法、装置、电子设备及存储介质。
背景技术
多租户系统是一种基于单个软件可以为多个不同用户组提供服务的软件架构。为了实现业务快速迭代和保障业务稳定性,多租户系统一般采用灰度发布的方式更新系统版本。
现有的灰度发布技术,通常是在业务逻辑代码中增加可用名单和/或禁用名单,或在网关层面采用流量百分比方式进行灰度发布。然而,在业务逻辑代码中增加可用名单和/或禁用名单会对业务入侵比较大,调整可用名单和/或禁用名单时,需要业务团队发布代码或接入动态配置中心,过程复杂且繁琐;在网关层面采用流量百分比方式进行灰度发布时,对代码的兼容性要求极高,从而使得业务代码的开发难度较大。
发明内容
针对现有技术存在的问题,本发明提供一种灰度发布方法、装置、电子设备及存储介质。
第一方面,本发明提供一种灰度发布方法,包括:
通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
基于所述Kong API网关的日志,确定流量分配规则;
基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
可选地,根据本发明提供的一种灰度发布方法,所述基于所述Kong API网关的日志,确定流量分配规则,包括:
基于所述Kong API网关的日志,分别确定每一个所述目标租户的流量占比;
基于每一个所述目标租户的流量占比,确定所述流量分配规则。
可选地,根据本发明提供的一种灰度发布方法,所述基于每一个所述目标租户的流量占比,确定所述流量分配规则,包括:
基于每一个所述目标租户的流量占比,确定灰度发布阶段,每一个所述灰度发布阶段分别对应的灰度租户名单,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比。
可选地,根据本发明提供的一种灰度发布方法,所述基于每一个所述目标租户的流量占比,确定灰度发布阶段,每一个所述灰度发布阶段分别对应的灰度租户名单,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比,包括:
基于每一个所述目标租户的流量占比,确定所述灰度发布阶段,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比;
基于所述至少一个目标租户,每一个所述目标租户的流量占比,所述灰度发布阶段,每一个所述灰度发布阶段分别对应的新版本应用的流量占比和第一信息,确定每一个所述灰度发布阶段分别对应的灰度租户名单;
所述第一信息包括以下任意一项或多项:
目标租户的级别;或
目标租户的敏感度;或
指示信息,所述指示信息用于指示所述目标租户是重要客户或所述目标租户不是重要客户。
可选地,根据本发明提供的一种灰度发布方法,所述基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流,包括:
确定每一个所述灰度发布阶段分别对应的租户流量分配相关数据;
基于所述灰度发布阶段的先后顺序,将每一个所述灰度发布阶段分别对应的租户流量分配相关数据依次发送至所述Kong API网关;
基于所述至少一个目标租户,所述流量分配规则和所述租户流量分配相关数据,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
可选地,根据本发明提供的一种灰度发布方法,所述基于所述至少一个目标租户,所述流量分配规则和所述租户流量分配相关数据,通过所述Kong API网关,对所述至少一个目标租户进行流量分流,包括:
将所述流量分配规则配置至所述Kong API网关上所配置的灰度发布插件中;
基于所述至少一个目标租户和所述租户流量分配相关数据,通过所述灰度发布插件,对所述至少一个目标租户进行流量分流。
可选地,根据本发明提供的一种灰度发布方法,所述通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户,包括:
基于目标请求的相关信息,通过所述租户识别插件识别所述目标请求对应的所述至少一个目标租户。
第二方面,本发明还提供一种灰度发布装置,包括:
获取模块,用于通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
确定模块,用于基于所述Kong API网关的日志,确定流量分配规则;
流量分流模块,用于基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述灰度发布方法。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述灰度发布方法。
本发明提供的灰度发布方法、装置、电子设备及存储介质,通过在Kong API网关层面实现对租户的识别,并对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的灰度发布方法的流程示意图;
图2是本发明提供的灰度发布装置的结构示意图;
图3是本发明提供的电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图3描述本发明提供的灰度发布方法、装置、电子设备及存储介质。
图1是本发明提供的灰度发布方法的流程示意图,如图1所示,该方法包括如下:
步骤100,通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
步骤110,基于所述Kong API网关的日志,确定流量分配规则;
步骤120,基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
具体地,为了克服现有的灰度发布技术对业务入侵较大和对代码的兼容性要求极高的缺陷,本发明首先通过Kong API网关上所配置的租户识别插件,获取目标租户;然后基于Kong API网关的日志,确定流量分配规则;最后通过Kong API网关,对目标租户进行流量分流。本发明通过在Kong API网关层面实现对租户的识别,并对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
可以理解的是,灰度发布可以是指在旧应用版本A与新应用版本B之间,能够平滑过渡的一种发布方式。也就是说,可以让一部分用户继续使用旧应用版本A,另一部分用户开始使用新应用版本B,如果用户对新应用版本B没有任何反对意见,那么可以逐步扩大用户使用新应用版本B的范围,直至将所有用户都迁移到使用新应用版本B上面,灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现和调整问题,以保证其影响度。
可选地,灰度发布开始到结束期之间的这一段时间,可以称为灰度期。
可选地,可以通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户。
可以理解的是,Kong API网关可以通过插件扩展已有的功能,这些插件可以在API请求响应循环的生命周期中被执行,因此,可以在Kong API网关上配置租户识别插件,以在Kong API网关层面上通过租户识别插件实现对租户的识别。
可选地,可以基于Kong API网关的日志,确定流量分配规则。
具体地,可以基于Kong API网关日志记录的租户的具体信息,基于这些信息确定对租户进行流量分流的流量分配规则。
可选地,可以基于至少一个目标租户和流量分配规则,通过Kong API网关,对至少一个目标租户进行流量分流。
具体地,可以基于租户识别插件识别出来的多个租户,和基于Kong API网关日志确定的流量分配规则,在Kong API网关层面上实现对多个租户进行流量分流。
本发明提供的灰度发布方法,通过在Kong API网关层面实现对租户的识别,并对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
可选地,所述基于所述Kong API网关的日志,确定流量分配规则,包括:
基于所述Kong API网关的日志,分别确定每一个所述目标租户的流量占比;
基于每一个所述目标租户的流量占比,确定所述流量分配规则。
具体地,基于Kong API网关的日志,确定流量分配规则的具体实现步骤可以包括如下步骤200和步骤210:
步骤200,基于Kong API网关的日志,分别确定每一个目标租户的流量占比;
步骤210,基于每一个目标租户的流量占比,确定流量分配规则。
可选地,可以基于Kong API网关的日志,分别确定每一个目标租户的流量占比。
具体地,可以基于Kong API网关的日志,确定每一个目标租户对应的流量;进一步基于每一个目标租户对应的流量,确定每一个目标租户对应的流量占所有目标租户对应的总流量的百分比,即可得到每一个目标租户的流量占比。
可选地,可以基于每一个目标租户的流量占比,确定流量分配规则。
例如,可以基于每一个目标租户的流量占比,确定将流量占比较高的租户流量先分流到新版本的应用,再渐进式地将更多租户流量分流到新版本的应用。
可选地,基于每一个目标租户的流量占比,确定流量分配规则,具体确定的流量分配规则是什么规则,本发明对此不作具体限定。
本发明通过基于Kong API网关的日志,确定每一个目标租户的流量占比,进一步基于每一个目标租户的流量占比,确定流量分配规则,可以实现灵活确定租户的流量走向并按需调整。
可选地,所述基于每一个所述目标租户的流量占比,确定所述流量分配规则,包括:
基于每一个所述目标租户的流量占比,确定灰度发布阶段,每一个所述灰度发布阶段分别对应的灰度租户名单,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比。
可选地,可以基于每一个目标租户的流量占比,确定灰度发布阶段,每一个灰度发布阶段分别对应的灰度租户名单,以及每一个灰度发布阶段分别对应的新版本应用的流量占比。
可选地,可以将确定的灰度发布阶段,每一个灰度发布阶段分别对应的灰度租户名单,以及每一个灰度发布阶段分别对应的新版本应用的流量占比作为流量分配规则。
例如,可以基于灰度发布阶段的先后顺序,渐进式地将使用旧应用版本A的租户迁移到使用新版本应用B上面。
例如,可以基于每一个目标租户的流量占比,确定4个灰度发布阶段,每一个发布阶段有对应的灰度租户名单,并且每一个发布阶段分别对应的新版本应用的流量占比分别为10%,30%,50%,100%。
本发明通过基于Kong API网关的日志,确定每一个目标租户的流量占比,进一步基于每一个目标租户的流量占比,确定具体的流量分配规则,进而基于流量分配规则可以实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
可选地,所述基于每一个所述目标租户的流量占比,确定灰度发布阶段,每一个所述灰度发布阶段分别对应的灰度租户名单,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比,包括:
基于每一个所述目标租户的流量占比,确定所述灰度发布阶段,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比;
基于所述至少一个目标租户,每一个所述目标租户的流量占比,所述灰度发布阶段,每一个所述灰度发布阶段分别对应的新版本应用的流量占比和第一信息,确定每一个所述灰度发布阶段分别对应的灰度租户名单;
所述第一信息包括以下任意一项或多项:
目标租户的级别;或
目标租户的敏感度;或
指示信息,所述指示信息用于指示所述目标租户是重要客户或所述目标租户不是重要客户。
具体地,基于每一个目标租户的流量占比,确定灰度发布阶段,每一个灰度发布阶段分别对应的灰度租户名单,以及每一个灰度发布阶段分别对应的新版本应用的流量占比的具体实现步骤可以包括如下步骤300和步骤310:
步骤300,基于每一个目标租户的流量占比,确定灰度发布阶段,以及每一个灰度发布阶段分别对应的新版本应用的流量占比;
步骤310,基于至少一个目标租户,每一个目标租户的流量占比,灰度发布阶段,每一个灰度发布阶段分别对应的新版本应用的流量占比和第一信息,确定每一个灰度发布阶段分别对应的灰度租户名单。
可选地,可以基于每一个目标租户的流量占比,确定灰度发布阶段,以及每一个灰度发布阶段分别对应的新版本应用的流量占比。
可选地,可以基于至少一个目标租户,每一个目标租户的流量占比,灰度发布阶段,每一个灰度发布阶段分别对应的新版本应用的流量占比和第一信息,确定每一个灰度发布阶段分别对应的灰度租户名单。
例如,共有3个目标租户,其中,目标租户A的流量占比为20%,目标租户B的流量占比为30%,目标租户C的流量占比为50%,基于目标租户的流量占比,可以任意确定灰度发布阶段,例如确定2个灰度发布阶段,并确定第1个灰度发布阶段对应的新版本应用的流量占比为50%,第2个灰度发布阶段对应的新版本应用的流量占比为100%。
例如,可以基于上述确定的灰度发布阶段和每一个灰度发布阶段对应的新版本应用的流量占比,可以确定第1个灰度发布阶段对应的灰度租户名单为目标租户C,第2个灰度发布阶段对应的灰度租户名单为目标租户A和目标租户B。
可选地,第一信息可以包括以下任意一项或多项:
目标租户的级别;或
目标租户的敏感度;或
指示信息,指示信息用于指示目标租户是重要客户或目标租户不是重要客户。
可选地,目标租户的级别可以是指目标租户的流量占比对应的级别。
例如,目标租户A的流量占比为20%,目标租户B的流量占比为30%,目标租户C的流量占比为50%,则可以确定目标租户C对应第一级别,目标租户A和目标租户B对应第二级别,进而可以将级别较高的目标租户C流量首先分流到新版本应用。
可选地,目标租户的敏感度可以用于表征目标租户对新版本应用中存在的缺陷或漏洞(bug)的容忍程度。
可选地,可以将目标租户的敏感度较低的租户流量首先分流到新版本应用。
可选地,可以基于指示信息,确定目标租户是否是重要客户,在目标租户不是重要客户的情况下,可以将不是重要客户的租户首先分流到新版本应用。
本发明通过基于Kong API网关的日志,确定每一个目标租户的流量占比,进一步基于每一个目标租户的流量占比,确定具体的流量分配规则,进而基于流量分配规则可以实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
可选地,所述基于所述至少一个目标租户和所述流量分配规则,通过所述KongAPI网关,对所述至少一个目标租户进行流量分流,包括:
确定每一个所述灰度发布阶段分别对应的租户流量分配相关数据;
基于所述灰度发布阶段的先后顺序,将每一个所述灰度发布阶段分别对应的租户流量分配相关数据依次发送至所述Kong API网关;
基于所述至少一个目标租户,所述流量分配规则和所述租户流量分配相关数据,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
具体地,基于至少一个目标租户和流量分配规则,通过Kong API网关,对至少一个目标租户进行流量分流的具体实现步骤可以包括如下步骤400-步骤420:
步骤400,确定每一个灰度发布阶段分别对应的租户流量分配相关数据;
步骤410,基于灰度发布阶段的先后顺序,将每一个灰度发布阶段分别对应的租户流量分配相关数据依次发送至Kong API网关;
步骤420,基于至少一个目标租户,流量分配规则和租户流量分配相关数据,通过Kong API网关,对至少一个目标租户进行流量分流。
可选地,在对目标租户流量进行分流之前,可以部署两套多租户系统的应用版本,一套为旧应用版本,另一套为新应用版本。在灰度发布的初始状态下,所有目标租户的流量都在旧应用版本,新应用版本的流量为0。
可选地,可以确定每一个灰度发布阶段分别对应的租户流量分配相关数据。
可选地,租户流量分配相关数据可以包括灰度租户的可用名单,新应用版本的标识,旧应用版本的标识,分流租户的名单等等,本发明对此不作具体限定。
可选地,可以基于灰度发布阶段的先后顺序,将每一个灰度发布阶段分别对应的租户流量分配相关数据依次发送至Kong API网关。
可选地,基于至少一个目标租户,流量分配规则和租户流量分配相关数据,通过Kong API网关,对至少一个目标租户进行流量分流。
例如,可以首先将第一灰度发布阶段对应的租户流量分配相关数据发送至KongAPI网关,以在Kong API网关层面对第一灰度发布阶段对应租户流量进行分流;然后将第二灰度发布阶段对应的租户流量分配相关数据发送至Kong API网关,以在Kong API网关层面对第二灰度发布阶段对应租户流量进行分流;进一步将第三灰度发布阶段对应的租户流量分配相关数据发送至Kong API网关,以在Kong API网关层面对第三灰度发布阶段对应租户流量进行分流;以此类推,直至将识别的所有目标租户流量进行分流。
本发明通过在Kong API网关层面实现对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
可选地,所述基于所述至少一个目标租户,所述流量分配规则和所述租户流量分配相关数据,通过所述Kong API网关,对所述至少一个目标租户进行流量分流,包括:
将所述流量分配规则配置至所述Kong API网关上所配置的灰度发布插件中;
基于所述至少一个目标租户和所述租户流量分配相关数据,通过所述灰度发布插件,对所述至少一个目标租户进行流量分流。
可选地,可以将流量分配规则配置至Kong API网关上所配置的灰度发布插件中。
可选地,灰度发布插件可以用于对目标租户进行流量分流。
可选地,可以基于至少一个目标租户和租户流量分配相关数据,通过灰度发布插件,对至少一个目标租户进行流量分流。
本发明通过在Kong API网关上配置流量分配规则,以在Kong API网关层面上实现对租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
可选地,所述通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户,包括:
基于目标请求的相关信息,通过所述租户识别插件识别所述目标请求对应的所述至少一个目标租户。
可选地,可以基于目标请求的相关信息,通过租户识别插件识别目标请求对应的至少一个目标租户。
可选地,目标请求可以为HTTP请求。
可选地,在目标请求为HTTP请求的情况下,目标请求包括的相关信息可以包括以下任意一项或多项:
header信息;或
host信息;或
query string信息;或
body信息。
本发明通过在Kong API网关上配置租户识别插件,可以实现在Kong API网关层面上对目标租户进行识别。
可选地,可以在应用服务器之前部署Kong API网关集群作为反向代理。
可选地,可以在部署的Kong API网关集群上配置租户识别插件和灰度发布插件。
可选地,租户识别插件可以用于基于HTTP请求信息识别请求对应的租户。
可选地,HTTP请求信息可以包括以下任意一项或多项:
header信息;或
host信息;或
query string信息;或
body信息。
可选地,灰度发布插件可以用于基于租户识别插件识别出的租户,以及灰度发布插件上配置的流量分配规则进行租户的流量分流。
可选地,可以基于Kong API网关的日志,统计灰度发布插件识别出来的所有租户中的每一个租户的流量占所有租户的流量的比例。
可选地,可以根据所统计的租户流量占比,制定灰度发布的阶段及每个阶段的灰度租户名单(可用名单)、每个阶段新版本应用的流量占比。
例如,假设统计出目标租户A的流量占比为10%,目标租户B的流量占比为30%,目标租户C的流量占比为40%,目标租户D的流量占比为20%,可以制定4个灰度发布阶段,并制定每一个灰度发布阶段对应的灰度租户名单,例如第1个灰度发布阶段对应的租户为目标租户C,第2个灰度发布阶段对应的租户为目标租户B,第3个灰度发布阶段对应的租户为目标租户D,第4个灰度发布阶段对应的租户为目标租户A,则第1个灰度发布阶段对应40%的灰度流量到新版本应用,第2个灰度发布阶段对应70%的灰度流量到新版本应用,第3个灰度发布阶段对应90%的灰度流量到新版本应用,第4个灰度发布阶段对应100%的灰度流量到新版本应用。
可选地,灰度租户名单的筛选可以从实际出发考虑其他因素,例如租户的级别、租户的敏感度和租户是否是重要客户(KA,KeyAccount)等等。
可选地,可以部署两套多租户系统的应用版本,一套为旧应用版本,另一套为新应用版本。在灰度发布的初始状态下,所有租户的流量都在旧应用版本,新应用版本的流量为0。
可选地,可以使用自动化运维工具将每个阶段的租户流量分配相关数据通过HTTP方式发送至Kong API网关集群的管理API(Admin API),使Kong API网关根据预先部署的租户流量分配规则进行流量分流,实现租户级灰度发布。此时,新版本应用集群的规模可以相应扩大,旧版本应用集群的规模可以相应收缩。扩大和收缩的方法本发明对此不作具体限定,可以根据实际情况任意进行技术选型,例如可以使用成熟的容器调度技术Kubernetes进行扩容和缩容。
可选地,可以按照预先制定的灰度阶段,渐进式地将更多租户流量分流到新版本的应用,并相应地调整应用集群的规模。
可选地,在灰度发布的过程中,若发现有缺陷或漏洞(bug)等不稳定因素的情况下,可以按照实际需要进行流量回切操作。
可选地,在灰度发布的最后阶段,需要将100%的流量迁移到新应用版本。此时的做法不是将所有租户都放进可用名单,而可以通过调用网关集群的Admin API修改Kongservice的upstream指向来完成。
可选地,在将所有的网络流量都切换到了新版本应用集群的情况下,则完成了一次灰度发布过程,即使所有租户都使用到了新版本的应用代码。
本发明通过在Kong API网关上实现对请求的租户进行识别,并基于识别的租户将流量分流,租户的流量走向可以灵活配置和按需调整。
具体地,本发明针对多租户系统的灰度发布技术存在对业务入侵比较大和对代码的向下兼容性要求极高的缺陷,提供了一种多租户系统的灰度发布方法,可以实现租户维度流量的精确控制,可以使不同的租户使用不同的软件版本,大幅提高发布质量和多租户系统的稳定性。
本发明提供的灰度发布方法,通过在Kong API网关层面实现对租户的识别,并对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
下面对本发明提供的灰度发布装置进行描述,下文描述的灰度发布装置与上文描述的灰度发布方法可相互对应参照。
图2是本发明提供的灰度发布装置的结构示意图,如图2所示,该装置包括:获取模块210、确定模块220和流量分流模块230;其中:
获取模块210用于通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
确定模块220用于基于所述Kong API网关的日志,确定流量分配规则;
流量分流模块230用于基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
具体地,灰度发布装置可以通过获取模块210基于Kong API网关上所配置的租户识别插件,获取至少一个目标租户;然后基于Kong API网关的日志,通过确定模块220确定流量分配规则;最后基于至少一个目标租户和流量分配规则,通过流量分流模块230基于Kong API网关,对至少一个目标租户进行流量分流。
在此需要说明的是,本发明实施例提供的上述装置,能够实现上述灰度发布方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
本发明提供的灰度发布装置,通过在Kong API网关层面实现对租户的识别,并对识别的租户进行流量分流,从而实现多租户的灰度发布,既无需入侵代码逻辑,也对代码的兼容性没有要求,可以提高灰度发布质量,进而提升多租户系统的稳定性。
图3是本发明提供的电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行上述各方法所提供的灰度发布方法,该方法包括:
通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
基于所述Kong API网关的日志,确定流量分配规则;
基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的灰度发布方法,该方法包括:
通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
基于所述Kong API网关的日志,确定流量分配规则;
基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的灰度发布方法,该方法包括:
通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
基于所述Kong API网关的日志,确定流量分配规则;
基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种灰度发布方法,其特征在于,包括:
通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
基于所述Kong API网关的日志,确定流量分配规则;
基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
2.根据权利要求1所述的灰度发布方法,其特征在于,所述基于所述Kong API网关的日志,确定流量分配规则,包括:
基于所述Kong API网关的日志,分别确定每一个所述目标租户的流量占比;
基于每一个所述目标租户的流量占比,确定所述流量分配规则。
3.根据权利要求2所述的灰度发布方法,其特征在于,所述基于每一个所述目标租户的流量占比,确定所述流量分配规则,包括:
基于每一个所述目标租户的流量占比,确定灰度发布阶段,每一个所述灰度发布阶段分别对应的灰度租户名单,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比。
4.根据权利要求3所述的灰度发布方法,其特征在于,所述基于每一个所述目标租户的流量占比,确定灰度发布阶段,每一个所述灰度发布阶段分别对应的灰度租户名单,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比,包括:
基于每一个所述目标租户的流量占比,确定所述灰度发布阶段,以及每一个所述灰度发布阶段分别对应的新版本应用的流量占比;
基于所述至少一个目标租户,每一个所述目标租户的流量占比,所述灰度发布阶段,每一个所述灰度发布阶段分别对应的新版本应用的流量占比和第一信息,确定每一个所述灰度发布阶段分别对应的灰度租户名单;
所述第一信息包括以下任意一项或多项:
目标租户的级别;或
目标租户的敏感度;或
指示信息,所述指示信息用于指示所述目标租户是重要客户或所述目标租户不是重要客户。
5.根据权利要求3或4所述的灰度发布方法,其特征在于,所述基于所述至少一个目标租户和所述流量分配规则,通过所述Kong API网关,对所述至少一个目标租户进行流量分流,包括:
确定每一个所述灰度发布阶段分别对应的租户流量分配相关数据;
基于所述灰度发布阶段的先后顺序,将每一个所述灰度发布阶段分别对应的租户流量分配相关数据依次发送至所述Kong API网关;
基于所述至少一个目标租户,所述流量分配规则和所述租户流量分配相关数据,通过所述Kong API网关,对所述至少一个目标租户进行流量分流。
6.根据权利要求5所述的灰度发布方法,其特征在于,所述基于所述至少一个目标租户,所述流量分配规则和所述租户流量分配相关数据,通过所述Kong API网关,对所述至少一个目标租户进行流量分流,包括:
将所述流量分配规则配置至所述Kong API网关上所配置的灰度发布插件中;
基于所述至少一个目标租户和所述租户流量分配相关数据,通过所述灰度发布插件,对所述至少一个目标租户进行流量分流。
7.根据权利要求1-4任一项或6所述的灰度发布方法,其特征在于,所述通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户,包括:
基于目标请求的相关信息,通过所述租户识别插件识别所述目标请求对应的所述至少一个目标租户。
8.一种灰度发布装置,其特征在于,包括:
获取模块,用于通过Kong API网关上所配置的租户识别插件,获取至少一个目标租户;
确定模块,用于基于所述Kong API网关的日志,确定流量分配规则;
流量分流模块,用于基于所述至少一个目标租户和所述流量分配规则,通过所述KongAPI网关,对所述至少一个目标租户进行流量分流。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述灰度发布方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述灰度发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210308641.8A CN114422440B (zh) | 2022-03-28 | 2022-03-28 | 灰度发布方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210308641.8A CN114422440B (zh) | 2022-03-28 | 2022-03-28 | 灰度发布方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114422440A true CN114422440A (zh) | 2022-04-29 |
CN114422440B CN114422440B (zh) | 2022-07-12 |
Family
ID=81263960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210308641.8A Active CN114422440B (zh) | 2022-03-28 | 2022-03-28 | 灰度发布方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114422440B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190076A (zh) * | 2022-07-14 | 2022-10-14 | 中国工商银行股份有限公司 | 流量分流方法、装置、计算机可读存储介质及电子设备 |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030229545A1 (en) * | 2002-06-10 | 2003-12-11 | Robert Dean Veres | Method and system for automatically updating a seller application utilized in a network-based transaction facility |
US20150128121A1 (en) * | 2013-11-06 | 2015-05-07 | Improvement Interactive, LLC | Dynamic application version selection |
JP2019109607A (ja) * | 2017-12-15 | 2019-07-04 | 株式会社東芝 | ネットワークシステム、ゲートウェイ装置およびデータ処理方法 |
CN110062022A (zh) * | 2019-03-04 | 2019-07-26 | 山东浪潮通软信息科技有限公司 | 一种服务端灰度部署应用系统api更新的方法 |
US20190394101A1 (en) * | 2017-03-20 | 2019-12-26 | Red Hat, Inc. | Automatic microservice problem detection in enterprise applications |
CN110874227A (zh) * | 2018-08-29 | 2020-03-10 | 京东数字科技控股有限公司 | 实现于api网关的灰度发布的分流方法、系统和电子设备 |
CN111176723A (zh) * | 2019-12-31 | 2020-05-19 | 上海道客网络科技有限公司 | 基于服务网格和链路版本的服务多版本发布系统与方法 |
CN111294288A (zh) * | 2020-01-16 | 2020-06-16 | 深圳市朱墨科技有限公司 | 一种流量识别方法、装置、应用程序接口网关和存储介质 |
CN111580846A (zh) * | 2020-05-15 | 2020-08-25 | 厦门靠谱云股份有限公司 | 一种基于混合框架的微服务灰度发布方法 |
CN111628894A (zh) * | 2020-05-28 | 2020-09-04 | 上海冰鉴信息科技有限公司 | 基于用户请求流量控制的灰度发布方法、装置及系统 |
CN111865683A (zh) * | 2020-07-17 | 2020-10-30 | 北京百度网讯科技有限公司 | 虚拟网关版本灰度发布方法、装置、设备以及存储介质 |
CN112000348A (zh) * | 2020-07-28 | 2020-11-27 | 金蝶医疗软件科技有限公司 | 服务灰度发布的控制方法、装置、计算机设备 |
CN112073320A (zh) * | 2020-11-12 | 2020-12-11 | 深圳壹账通智能科技有限公司 | 基于云网关的api灰度发布方法、装置及计算机设备 |
CN112118565A (zh) * | 2020-08-14 | 2020-12-22 | 金蝶医疗软件科技有限公司 | 多租户服务灰度发布方法、装置、计算机设备和存储介质 |
CN113296825A (zh) * | 2020-07-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种应用的灰度发布方法、装置和应用发布系统 |
CN113315824A (zh) * | 2021-05-26 | 2021-08-27 | 武汉悦学帮网络技术有限公司 | 一种应用的灰度发布方法、装置及应用的灰度发布系统 |
CN113422732A (zh) * | 2021-06-22 | 2021-09-21 | 康键信息技术(深圳)有限公司 | 基于全站灰度的版本更新方法、装置、设备及存储介质 |
CN113923081A (zh) * | 2021-10-15 | 2022-01-11 | 北京同城必应科技有限公司 | 分布式环境下灰度发布的业务网关解决方案 |
CN114040024A (zh) * | 2020-07-20 | 2022-02-11 | 深圳兆日科技股份有限公司 | 基于网关的微服务灰度发布方法、装置、设备及存储介质 |
-
2022
- 2022-03-28 CN CN202210308641.8A patent/CN114422440B/zh active Active
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030229545A1 (en) * | 2002-06-10 | 2003-12-11 | Robert Dean Veres | Method and system for automatically updating a seller application utilized in a network-based transaction facility |
US20150128121A1 (en) * | 2013-11-06 | 2015-05-07 | Improvement Interactive, LLC | Dynamic application version selection |
US20190394101A1 (en) * | 2017-03-20 | 2019-12-26 | Red Hat, Inc. | Automatic microservice problem detection in enterprise applications |
JP2019109607A (ja) * | 2017-12-15 | 2019-07-04 | 株式会社東芝 | ネットワークシステム、ゲートウェイ装置およびデータ処理方法 |
CN110874227A (zh) * | 2018-08-29 | 2020-03-10 | 京东数字科技控股有限公司 | 实现于api网关的灰度发布的分流方法、系统和电子设备 |
CN110062022A (zh) * | 2019-03-04 | 2019-07-26 | 山东浪潮通软信息科技有限公司 | 一种服务端灰度部署应用系统api更新的方法 |
CN111176723A (zh) * | 2019-12-31 | 2020-05-19 | 上海道客网络科技有限公司 | 基于服务网格和链路版本的服务多版本发布系统与方法 |
CN111294288A (zh) * | 2020-01-16 | 2020-06-16 | 深圳市朱墨科技有限公司 | 一种流量识别方法、装置、应用程序接口网关和存储介质 |
CN111580846A (zh) * | 2020-05-15 | 2020-08-25 | 厦门靠谱云股份有限公司 | 一种基于混合框架的微服务灰度发布方法 |
CN111628894A (zh) * | 2020-05-28 | 2020-09-04 | 上海冰鉴信息科技有限公司 | 基于用户请求流量控制的灰度发布方法、装置及系统 |
CN111865683A (zh) * | 2020-07-17 | 2020-10-30 | 北京百度网讯科技有限公司 | 虚拟网关版本灰度发布方法、装置、设备以及存储介质 |
CN114040024A (zh) * | 2020-07-20 | 2022-02-11 | 深圳兆日科技股份有限公司 | 基于网关的微服务灰度发布方法、装置、设备及存储介质 |
CN112000348A (zh) * | 2020-07-28 | 2020-11-27 | 金蝶医疗软件科技有限公司 | 服务灰度发布的控制方法、装置、计算机设备 |
CN113296825A (zh) * | 2020-07-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种应用的灰度发布方法、装置和应用发布系统 |
CN112118565A (zh) * | 2020-08-14 | 2020-12-22 | 金蝶医疗软件科技有限公司 | 多租户服务灰度发布方法、装置、计算机设备和存储介质 |
CN112073320A (zh) * | 2020-11-12 | 2020-12-11 | 深圳壹账通智能科技有限公司 | 基于云网关的api灰度发布方法、装置及计算机设备 |
CN113315824A (zh) * | 2021-05-26 | 2021-08-27 | 武汉悦学帮网络技术有限公司 | 一种应用的灰度发布方法、装置及应用的灰度发布系统 |
CN113422732A (zh) * | 2021-06-22 | 2021-09-21 | 康键信息技术(深圳)有限公司 | 基于全站灰度的版本更新方法、装置、设备及存储介质 |
CN113923081A (zh) * | 2021-10-15 | 2022-01-11 | 北京同城必应科技有限公司 | 分布式环境下灰度发布的业务网关解决方案 |
Non-Patent Citations (6)
Title |
---|
FAGONGZI: "gateway杂谈:线上引流和灰度发布", 《HTTP://MY.OSCHINA.NET/U/2244142/BLOG/1620724》 * |
FAGONGZI: "gateway杂谈:线上引流和灰度发布", 《HTTP://MY.OSCHINA.NET/U/2244142/BLOG/1620724》, 9 February 2018 (2018-02-09), pages 1 - 2 * |
明明在学JAVA: "互联网常用项目发布方式-灰度发布和网关zuul的简单理解", 《HTTP://BLOG.CSDN.NET/MRCOOL2021/ARTICLE/DETAILS/11262006》 * |
明明在学JAVA: "互联网常用项目发布方式-灰度发布和网关zuul的简单理解", 《HTTP://BLOG.CSDN.NET/MRCOOL2021/ARTICLE/DETAILS/11262006》, 14 January 2021 (2021-01-14), pages 1 - 4 * |
阿里云: "API网关灰度发布最佳实践", 《HTTPS://WWW.ALIBABACLOUD.COM/HELP/ZH/API-GATEWAY/LATEST/BEST-PRACTICES-FOR-IMPLEMENTING-A-CANARY-RELEASE-IN-API-GATEWAY》 * |
阿里云: "API网关灰度发布最佳实践", 《HTTPS://WWW.ALIBABACLOUD.COM/HELP/ZH/API-GATEWAY/LATEST/BEST-PRACTICES-FOR-IMPLEMENTING-A-CANARY-RELEASE-IN-API-GATEWAY》, 25 November 2021 (2021-11-25), pages 1 - 3 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190076A (zh) * | 2022-07-14 | 2022-10-14 | 中国工商银行股份有限公司 | 流量分流方法、装置、计算机可读存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114422440B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110365502B (zh) | 一种服务升级管理的方法、装置及存储介质 | |
CN110535777B (zh) | 访问请求控制方法、装置、电子设备以及可读存储介质 | |
CN110865842B (zh) | 一种ota升级方法和设备 | |
CN112398673A (zh) | 一种升级方法、通信设备以及计算机可读存储介质 | |
CN109978290A (zh) | 一种业务流程回退处理方法、流程引擎和业务系统 | |
CN114422440B (zh) | 灰度发布方法、装置、电子设备及存储介质 | |
CN109189494B (zh) | 配置灰度发布方法、装置、设备及计算机可读存储介质 | |
CN111708629B (zh) | 一种资源分配方法、装置、电子设备和存储介质 | |
CN107402878B (zh) | 测试方法和装置 | |
US20200293997A1 (en) | Maintenance staff scheduling method based on compound internet of things (iot) and iot system | |
CN112835617B (zh) | 一种灰度发布方法、装置、服务器及可读介质 | |
CN109842497B (zh) | Dns服务器的配置更新的方法及装置、终端设备和配置更新系统 | |
CN108632085B (zh) | 灰度用户管理方法、装置、平台及存储介质 | |
CN110716730B (zh) | 灰度发布方法、装置、设备及计算机可读存储介质 | |
CN113760461A (zh) | 一种版本升级方法及计算机可读存储介质 | |
CN108696554B (zh) | 负载均衡方法和装置 | |
CN116126372A (zh) | 一种应用程序升级方法、装置、电子设备和存储介质 | |
CN109753782B (zh) | 一种云安全资源池的适配处理方法及装置 | |
CN115827646A (zh) | 索引配置方法、装置和电子设备 | |
CN114070889B (zh) | 配置方法、流量转发方法、设备、存储介质及程序产品 | |
CN114064678A (zh) | 事件数据处理方法、装置及终端设备 | |
CN113934444A (zh) | 灰度发布方法、装置、计算机存储介质和电子设备 | |
CN109803160B (zh) | 一种资源分配方法、装置及系统 | |
CN114020635A (zh) | 基于场景化消息队列的数据测试方法、装置、设备及介质 | |
CN110597700A (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 |