基于TTL的多header链路灰度发布方法及系统技术方案

技术编号:31375778 阅读:13 留言:0更新日期:2021-12-15 11:10
本申请公开了基于TTL的多header链路灰度发布方法及系统,所述方法包括:通过获得第一业务规则;配置第一header正则表达式;获得第一拦截结果;获得第一ttl的jar包;定义第二http拦截器;获得第二header传递的jar包;将所述第二header传递的jar包,加入到业务项目的pom依赖中,进行版本配置和灰度配置,获取第一发布结果;设置到k8s微服务的label中进行发布。解决了现有技术中存在无法精细化控制服务、实现并行灰度,且不支持通用协议,因此难以被复用的技术问题。达到了按需要精细化配置,同时满足并行灰度链路,且支持主流云原生环境默认的远程过程调用方式的技术效果。默认的远程过程调用方式的技术效果。默认的远程过程调用方式的技术效果。

【技术实现步骤摘要】
基于TTL的多header链路灰度发布方法及系统


[0001]本专利技术涉及计算机领域,尤其涉及基于TTL的多header链路灰度发布方法及系统。

技术介绍

[0002]随着docker容器技术和kubernetes容器编排技术的发展,云原生的微服务也越来越多的被互联网和软件公司所采纳,同时使用istio来实现servicemesh已经成为一种主流趋势。
[0003]灰度发布是指将生产流量与待发布流量进行流量迁移的过程。现有以Nginx为代表的前端软负载灰度流量分发和以dubbo为代表的rpc灰度标签链路透明传递正常使用一个gray标签,以springcloud gateway为代表的服务框架灰度路由使用一个header头,但是对应一个链路规则,由配置中心维护该header头对应的链路规则id的映射关系以不同链路规则id对应的链路灰度配置。在实际的业务中往往存在一些场景需要对一些链路进行流量迁移的管理,istio目前只能满足针对单个微服务的灰度发布需求。
[0004]本申请专利技术人在实现本申请实施例中专利技术技术方案的过程中,发现上述技术至少存在如下技术问题:
[0005]现有技术中存在无法精细化控制是否需要调用gray标记的服务,无法实现并行灰度,且不支持通用的http和grpc协议,因此难以被不同框架复用的技术问题。

技术实现思路

[0006]有鉴于此,本申请实施例通过提供基于TTL的多header链路灰度发布方法及系统,所述方法包括:通过获得第一业务规则;根据所述第一业务规则配置第一header正则表达式;定义第一servlet拦截器,获得第一拦截指令,通过所述第一拦截指令,基于servlet进行微服务的http请求拦截,获得第一拦截结果;通过所述第一header正则表达式对所述第一拦截结果进行过滤,获得第一ttl的jar包,将所述第一ttl的jar包保存到ttl context中,设置第一上下文结果;定义第二http拦截器,将所述第一上下文结果设置到所述第二http拦截器的http请求header中;将所述第一servlet拦截器、所述第二http拦截器通过maven打包并上传至maven仓库,获得第二header传递的jar包;将所述第二header传递的jar包,加入到业务项目的pom依赖中,通过javaagent将所述第一ttl的jar包加入到启动命令中,进行版本配置和灰度配置,获取第一发布结果;将所述第一发布结果设置到k8s微服务的label中进行发布。解决了现有技术中存在无法精细化控制是否需要调用gray标记的服务,无法实现并行灰度,且不支持通用的http和grpc协议,因此难以被不同框架复用的技术问题。达到了按业务方需要精细化配置header组合,同时满足并行灰度链路的需求,且接入门槛低,支持主流云原生环境默认的http和grpc远程过程调用方式的技术效果。
[0007]鉴于上述问题,本申请实施例提供了基于TTL的多header链路灰度发布方法及系统。
[0008]第一方面,本申请提供了基于TTL的多header链路灰度发布方法,所述方法通过实
现基于TTL的多header链路灰度发布系统,其中,所述方法包括:通过获得第一业务规则;根据所述第一业务规则配置第一header正则表达式;定义第一servlet拦截器,获得第一拦截指令,通过所述第一拦截指令,基于servlet进行微服务的http请求拦截,获得第一拦截结果;通过所述第一header正则表达式对所述第一拦截结果进行过滤,获得第一ttl的jar包,将所述第一ttl的jar包保存到ttl context中,设置第一上下文结果;定义第二http拦截器,将所述第一上下文结果设置到所述第二http拦截器的http请求header中;将所述第一servlet拦截器、所述第二http拦截器通过maven打包并上传至maven仓库,获得第二header传递的jar包;将所述第二header传递的jar包,加入到业务项目的pom依赖中,通过javaagent将所述第一ttl的jar包加入到启动命令中,进行版本配置和灰度配置,获取第一发布结果;将所述第一发布结果设置到k8s微服务的label中进行发布。
[0009]另一方面,本申请还提供了基于TTL的多header链路灰度发布系统,用于执行如第一方面所述的基于TTL的多header链路灰度发布方法,其中,所述系统包括:第一获得单元:所述第一获得单元用于获得第一业务规则;第一配置单元:所述第一配置单元用于根据所述第一业务规则配置第一header正则表达式;第二获得单元:所述第二获得单元用于定义第一servlet拦截器,获得第一拦截指令,通过所述第一拦截指令,基于servlet进行微服务的http请求拦截,获得第一拦截结果;第三获得单元:所述第三获得单元用于通过所述第一header正则表达式对所述第一拦截结果进行过滤,获得第一ttl的jar包,将所述第一ttl的jar包保存到ttl context中,设置第一上下文结果;第一开发单元:所述第一开发单元用于定义第二http拦截器,将所述第一上下文结果设置到所述第二http拦截器的http请求header中;第四获得单元:所述第四获得单元用于将所述第一servlet拦截器、所述第二http拦截器通过maven打包并上传至maven仓库,获得第二header传递的jar包;第五获得单元:所述第五获得单元用于将所述第二header传递的jar包,加入到业务项目的pom依赖中,通过javaagent将所述第一ttl的jar包加入到启动命令中,进行版本配置和灰度配置,获取第一发布结果;第一发布单元:所述第一发布单元用于将所述第一发布结果设置到k8s微服务的label中进行发布。
[0010]第三方面,本申请实施例还提供了基于TTL的多header链路灰度发布系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述第一方面所述方法的步骤。
[0011]本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0012]1.通过获得第一业务规则;根据所述第一业务规则配置第一header正则表达式;定义第一servlet拦截器,获得第一拦截指令,通过所述第一拦截指令,基于servlet进行微服务的http请求拦截,获得第一拦截结果;通过所述第一header正则表达式对所述第一拦截结果进行过滤,获得第一ttl的jar包,将所述第一ttl的jar包保存到ttl context中,设置第一上下文结果;定义第二http拦截器,将所述第一上下文结果设置到所述第二http拦截器的http请求header中;将所述第一servlet拦截器、所述第二http拦截器通过maven打包并上传至maven仓库,获得第二header传递的jar包;将所述第二header传递的jar包,加入到业务项目的pom依赖中,通过javaagent将所述第一ttl的jar包加入到启动命令中,进行版本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于TTL的多header链路灰度发布方法,其中,所述方法包括:获得第一业务规则;根据所述第一业务规则配置第一header正则表达式;定义第一servlet拦截器,获得第一拦截指令,通过所述第一拦截指令,基于servlet进行微服务的http请求拦截,获得第一拦截结果;通过所述第一header正则表达式对所述第一拦截结果进行过滤,获得第一ttl的jar包,将所述第一ttl的jar包保存到ttl context中,设置第一上下文结果;定义第二http拦截器,将所述第一上下文结果设置到所述第二http拦截器的http请求header中;将所述第一servlet拦截器、所述第二http拦截器通过maven打包并上传至maven仓库,获得第二header传递的jar包;将所述第二header传递的jar包,加入到业务项目的pom依赖中,通过javaagent将所述第一ttl的jar包加入到启动命令中,进行版本配置和灰度配置,获取第一发布结果;将所述第一发布结果设置到k8s微服务的label中进行发布。2.如权利要求1所述的方法,其中,所述通过所述第一header正则表达式对所述第一拦截结果进行过滤,获得第一ttl的jar包,还包括:将所述第一ttl的jar包保存至TransmittableThreadLocal的context中。3.如权利要求2所述的方法,其中,所述定义第二http拦截器,将所述第一上下文结果设置到所述第二http拦截器的http请求header中,还包括:获得所述context中的第一header正则表达式;将所述第一header正则表达式设置到http的header中;构建resttemplate的拦截器和feign的拦截器,基于所述resttemplate的拦截器和所述feign的拦截器对所述http进行拦截。4.如权利要求1所述的方法,其中,所述将所述第二header传递的jar包,加入到业务项目的pom依赖中之前,还包括:将所述第二header传递的jar...

【专利技术属性】
技术研发人员:高维国陈贺巍
申请(专利权)人:百融至信北京征信有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1