SpringCloudGateway Nacos GitlabRunner全自动灰度服务怎么搭建


这篇文章主要介绍了SpringCloudGatewayNacosGitlabRunner全自动灰度服务怎么搭建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloudGatewayNacosGitlabRunner全自动灰度服务怎么搭建文章都会有所收获,下面我们一起来看看吧。要实现的业务场景:可以根据单个用户id或者批量用户id,判断是否需要灰度该用户/批量用户可以根据请求头字段(可动态设定的任意kv),判断是否需要走灰度服务这里采用 SpringCloudGateway(SCG) + Nacos + GitlabRunner 来实现整个自动化的灰度发布。SCG:统一的流量入口 + 正常/灰度服务选择分发逻辑处理Nacos:loadbalancer 提供方,通过 metadata 维护灰度服务GitlabRunner:灰度服务部署的自动化 CICD Pipeline 处理下面分别从以上这三个组件来搭建。直接上代码,通过注释讲解。GrayLoadBalancerClientFilter: 自定义灰度服务负载均衡过滤器NOTEFILTER_ORDER_GRAY 是一个 int 常量,其值不能随意定义(如-1,0,1,2之类)。从下表可以看到,SCG 的 LoadBalancerClientFilter 执行顺序是 10100,那么 GrayLoadBalancerClientFilter 的执行顺序必须 > 10100 (否则自定义的 Filter 里就会有变量未被赋值), 这里假定 FILTER_ORDER_GRAY = 10110GrayLoadBalancer: 灰度发布负载均衡策略Https2HttpFilter:将进入网关的 https 请求转换为 http 请求NOTEFILTER_ORDER_HTTPS_2_HTTP 是一个 int 常量,需要满足 LoadBalancerClientFilter 的执行顺序(10100)
Nacos 主要做一件事情:通过 metadata 维护灰度服务。从上图可以看出,metadata 里 gray-tag=true 的实例即为灰度服务的实例。通过 webUI 的编辑按钮可以实时的新增修改 metadata。那么,如何在代码侧配置呢?可以直接在bootstrap.yml添加以下字段:gitlab-runner 主要是 kube_deploy.yml 和 .gitlab-ci.yml 的一个联动配置kube_deploy.yml添加以下环境变量:.gitlab-ci.yml 灰度服务部署 gitlab-runner 脚本关键部分:此时,当打了一个以 tag_gray_ 开头的 tag 之后,kube_deploy.yml里的gray-tag就会被替换成 true,那么,nacos 的元数据上就会有一个gray-tag=true的标签,就会走灰度服务的发布流程。同理,以 tag_normal_ 开头的 tag,就会走正常服务的发布流程。把这段脚本嵌入到 pipeline 之后,就可以通过 tag 的方式,自动化部署灰度/正常服务了。目前实现的是后端服务的灰度发布,一个完整的灰度,还包含了前端应用的灰度,后续会就前端的灰度发布再做一次整理。实战依赖版本需要注意的在 Spring Cloud 全家桶中,最初的网关使用的是 Netflix 的 Zuul 1x 版本,但是由于其性能问题,Spring Cloud 在苦等 Zuul 2x 版本未果的情况下,推出了自家的网关产品,取名叫 Spring Cloud Gateway (以下简称 SCG),基于Webflux,通过底层封装Netty,实现异步IO,大大地提示了性能。Zuul 1x 版本本质上就是一个同步Servlet,采用多线程阻塞模型进行请求转发。简单讲,每来一个请求,Servlet容器要为该请求分配一个线程专门负责处理这个请求,直到响应返回客户端这个线程才会被释放返回容器线程池。如果后台服务调用比较耗时,那么这个线程就会被阻塞,阻塞期间线程资源被占用,不能干其它事情。我们知道Servlet容器线程池的大小是有限制的,当前端请求量大,而后台慢服务比较多时,很容易耗尽容器线程池内的线程,造成容器无法接受新的请求。且不支持任何长连接,如websocketNOTE 由于两个网关的底层架构不一致,负载均衡的逻辑也完全不一致,本文只探讨 Spring Cloud Gateway 配合 Nacos 来实现灰度发布( Spring Cloud Zuul 网关的灰度发布不展开)。关于“SpringCloudGatewayNacosGitlabRunner全自动灰度服务怎么搭建”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringCloudGatewayNacosGitlabRunner全自动灰度服务怎么搭建”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注免费云主机域名百云主机行业资讯频道。

相关推荐: Python玩转SQL的神器有哪些

这篇文章主要讲解了“Python玩转SQL的神器有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python玩转SQL的神器有哪些”吧! 一般使用ORM框架,都会有一些初始化工作,比如数据库连接,定义基础映…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/29 12:31
下一篇 06/29 12:32

相关推荐