Nepxion Discovery(2) 全链路条件蓝绿发布
一、前言
全链路蓝绿发布参考:https://zhengqing.blog.csdn.net/article/details/113065844
本文将基于之前的环境来进行全链路条件蓝绿发布
二、全链路条件蓝绿发布
1、全链路版本条件匹配
蓝绿发布
nacos中增加Spring Cloud Gateway的版本条件匹配蓝绿发布策略配置
Data ID | discovery-guide-gateway |
Group | discovery-guide-group |
配置格式 | XML |
规则策略配置
<?xml version="1.0" encoding="UTF-8"?>
<rule><!-- 基于Http Header传递的策略路由,全局缺省路由(第三优先级) --><strategy><version>{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</version></strategy><!-- 基于Http Header传递的定制化策略路由,支持蓝绿部署和灰度发布两种模式。如果都不命中,则执行上面的全局缺省路由 --><strategy-customization><!-- 全链路蓝绿部署:条件命中的匹配方式(第一优先级),支持版本匹配、区域匹配、IP地址和端口匹配、版本权重匹配、区域权重匹配 --><!-- header节点不允许缺失 --><conditions type="blue-green"><condition id="blue-condition" header="#H['a'] == '1'" version-id="blue-version-route"/><condition id="green-condition" header="#H['a'] == '1' && #H['b'] == '2'" version-id="green-version-route"/></conditions><routes><route id="blue-version-route" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route> <route id="green-version-route" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route></routes></strategy-customization>
</rule>
测试:
打开Postman
,导入Postman的测试脚本postman.json
(位于根目录下)
在Postman中执行目录结构下〔Nepxion〕
->〔Discovery指南网关接口〕
->〔Gateway网关调用示例〕
,调用地址为http://localhost:5001/discovery-guide-service-a/invoke/gateway,相关的Header值已经预设,供开发者修改。执行通过Spring Cloud Gateway网关发起的调用,结果如下:
规则策略解释
温馨小提示:为准确体现相关变量(例如上文中的 a )支持
Header
/Parameter
/Cookie
版本 | 表达式 |
---|---|
6.6.0版本之前 |
header="#H['a'] == '1'"
|
6.6.0版本开始 |
expression="#H['a'] == '1'" ,兼容header="#H['a'] == '1'"
|
① 当外部调用带有的Header/Parameter/Cookies中的值a=1 && b=2
,执行绿路由
<condition>
节点中 header="#H['a'] == '1' && #H['b'] == '2'"
对应的 version-id="green-version-route"
,找到下面<route>
节点中 id="green-version-route" type="version"
的那项,那么路由即为
{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}
② 当外部调用带有的Header/Parameter/Cookies中的值a=1
,执行蓝路由
<condition>
节点中 header="#H['a'] == '1'"
对应的 version-id="blue-version-route"
,找到下面<route>
节点中 id="blue-version-route" type="version"
的那项,那么路由即为
{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}
③ 当外部调用带有的Header/Parameter/Cookies中的值都不命中
,或未传值
,执行兜底路由
- 执行
<strategy>
节点中的全局缺省路由,那么路由即为
{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}
- 如果全局缺省路由未配置,则执行Spring Cloud Ribbon轮询策略
④ 假如不愿意从网关外部传入Header/Parameter/Cookies,那么支持策略下内置Header来决策蓝绿发布,可以代替外部传入Header/Parameter/Cookies,参考如下配置
<headers><header key="a" value="1"/>
</headers>
内置Header一般使用场景为定时Job的服务定时去调用其它服务,希望实施蓝绿灰度发布。当服务侧配置了内置Header,而网关也传递给对应Header给该服务,通过开关来决定,网关传递的Header为优先还是服务侧内置的Header优先
注:Spring Cloud Gateway在Finchley版不支持该方式!!!
⑤ 路由类型支持如下
蓝
|绿
|兜底
蓝 | 兜底
,即绿路由缺省
,那么兜底路由
则为绿路由
- 如果
蓝路由和路由都缺省
,那就只有兜底路由
(全局缺省路由),即为全链路版本匹配蓝绿发布
的路由场景
⑥ 策略总共支持5种,可以单独一项使用,也可以多项叠加使用
version
版本region
区域address
IP地址和端口version-weight
版本权重region-weight
区域权重
⑦ 策略支持Spring Spel的条件表达式方式
⑧ 策略支持Spring Matcher的通配方式
2、全链路区域条件匹配
蓝绿发布
参考全链路版本条件匹配蓝绿发布
,用法相似,只需要把规则策略中
- 属性
version-id
替换成region-id
- 属性
type="version"
替换成type="region"
- 节点
route
对应的Json中版本替换成区域
3、全链路IP地址和端口条件匹配
蓝绿发布
参考全链路版本条件匹配蓝绿发布
,用法相似,只需要把规则策略中
- 属性
version-id
替换成address-id
- 属性
type="version"
替换成type="address"
- 节点
route
对应的Json中版本替换成IP地址和端口
三、本文案例demo
https://gitee.com/zhengqingya/java-workspace
今日分享语句:
要取得成功,我们必须进行尝试。有时候,我们这样做会完全失败。最成功的人士都经历过失败。但是他们坚持了下来。他们中的大多数人都不会不顾后果地承担风险。实际上,他们总是竭尽所能地尽量减少他们前进道路上的风险。他们总是能从失败中汲取教训,这样做通常为他们以后的成功奠定了基础。
Nepxion Discovery(2) 全链路条件蓝绿发布相关推荐
- 掌门1对1微服务体系Solar第1弹:全链路灰度蓝绿发布智能化实践
掌门教育自2014年正式转型在线教育以来,秉承"让教育共享智能,让学习高效快乐"的宗旨和愿景,经历云计算.大数据.人工智能.AR/VR/MR以及现今最火的5G,一直坚持用科技赋能教 ...
- 11、Nepxion Discovery 之全链路界面操作蓝绿灰度发布
在之前的文章中讲过,用户可以通过 URL 请求以及配置中心进行灰度发布的操作,而且支持配置中心的灰度发布参数的动态变更.如果用户不希望使用上面的两种方式,Nepxion Discovery 框架还支持 ...
- 13、Nepxion Discovery 之 全链路调用链监控
在进行微服务调用的时候,为了系统的高可用性,不仅需要进行灰度发布验证服务的可用性.同时对于服务健康的监控也是很重要的一环.Nepxion Discovery 在这方面也有监控方面的集成,包含以下几个方 ...
- 1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操
背景: 蓝绿发布.金丝雀发布.滚动发布.A/B测试 ,是大家日常常见的发布工作.所以发布的原理和实操是一个非常.非常核心的面试知识点. 在40岁老架构师 尼恩的读者交流群(50+)中,其相关面试题是一 ...
- 金丝雀发布、滚动更新、蓝绿发布到底有啥区别
根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异.技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节. 作为技术人员,大 ...
- PolarisMesh系列文章——灰度发布系列(蓝绿发布)
蓝绿发布 什么是蓝绿发布 蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务全量转移到新版本中(两者均保持在生产环境中运行). 旧版本可以称为蓝色环境,而新版本则可称为绿色环境.一旦生产 ...
- 蓝绿发布、红黑发布、灰度发布你都分得清吗
一.全量发布 1.蓝绿发布 先通过网关断开转发A的链路,开始升级A,此时接口全部被转发到了应用集群B.升级完成后,接入A,再断开B,升级B,再连接上B. 优点:不需要保证集群额外的充足空间 缺点:升级 ...
- 微服务部署:蓝绿发布、滚动发布、灰度发布、金丝雀发布
在项目迭代的过程中,不可避免需要上线.上线对应着部署,或者重新部署:部署对应着修改,修改则意味着风险. 1.蓝绿发布(Blue/Green Deployment) ①定义 蓝绿部署是不停老版本,部署新 ...
- 一文看懂ingress nginx实现灰度发布和蓝绿发布过程
背景信息 灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版 ...
- 灰度发布与滚动发布、蓝绿发布介绍
文章目录 灰度发布与滚动发布.蓝绿发布介绍 一.灰度发布与滚动发布.蓝绿发布介绍 1.蓝绿部署 2.滚动发布 3.灰度发布 二.灰度发布好处 三.Gitee上高热度的开源灰度发布系统 四.安装使用 灰 ...
最新文章
- Go进阶:反射3定律
- anki_Anki如何挽救我的工程生涯
- 改mysql修改界定符_dbvisualizer参数设置
- vue pc端 商品轮播图_轮播图高点击商品图
- 前端信息查询与显示_中国商标网查询显示的信息都是正确的吗
- 牛顿插值法及其C++实现
- Java中的subList方法
- arduino 机器视觉编程_万物皆可仿真的MATLAB/Simulink神奇在哪?解析如何将其应用于一整套机器人设计开发流程...
- https 443 怎么改成80_阿里云购买免费https证书并用nginx配置代理详解(2020年9月)...
- 还在写 BUG?试试 GitHub 官方代码扫描工具!
- 小米平板1刷LineageOS16
- 天下足球十大感动台词
- 光盘显示0字节可用_u盘显示0字节怎么办 u盘显示0字节解决步骤【方法】
- 【好东西】ACM在线模版-f-zyj
- 进程间的相互通讯 C++
- 一起聆听碳氮循环研究新动态,我们在苏州期待您的精彩分享和参与!
- 美国计算机加音乐专业,美国音乐博士解析
- 超详细!图论最短路算法与极简c++代码(配题目)
- IAR 配置ICF跟项目走
- Path常用方法,不积硅步无以至千里
热门文章
- [BZOJ3503]-[CQOI2014]和谐矩阵-高斯消元
- Large-scale Video Classification with Convolutional Neural Networks
- pytorch/tensorflow使用anaconda安装scipy库
- 亮宁机器人套件_十大可编程机器人教育套件
- 这个“单”到底应该谁来买?
- 使用MATLAB进行多元非线性回归拟合预测
- windows副本不是正版提示解决方法
- LUP分解求解线性方程组及求逆矩阵 java
- D.MADMAX 记忆化搜索 DAG
- [转] 粤语八级题,你会做岩几多题??