Nepxion Discovery(1) 全链路蓝绿发布
一、前言
https://github.com/Nepxion/Discovery
Discovery【探索】微服务框架,基于Spring Cloud & Spring Cloud Alibaba,Discovery服务注册发现、Ribbon负载均衡、Feign和RestTemplate调用、Spring Cloud Gateway和Zuul过滤等组件全方位增强的企业级微服务开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用特征…
二、环境准备
运行nacos服务
基于docker环境运行nacos可参考:https://gitee.com/zhengqingya/docker-compose
下载代码:https://github.com/Nepxion/DiscoveryGuide (注:用simple分支)
温馨小提示:如果依赖下载不了,尝试将
discovery
版本修改为6.5.0
也可直接用小编的代码:https://gitee.com/zhengqingya/java-workspace代码导入idea中启动运行所需服务
① 访问测试 http://127.0.0.1:5001/discovery-guide-service-a/invoke/gateway
② 访问测试 http://127.0.0.1:5002/discovery-guide-service-a/invoke/zuul
三、全链路蓝绿发布
经典场景:当调用请求从网关或者服务发起的时候,通过
Header
|Parameter
|Cookie
一种或者几种参数进行驱动,在路由过滤中,根据这些参数,选择在配置中心配置的蓝路由
|绿路由
|兜底路由
的规则策略(Json格式),并把命中的规则策略转化为策略路由Header(n-d-开头),实现全链路传递。每个端到端服务接收到策略路由Header后,执行负载均衡时,该Header跟注册中心的对应元数据进行相关比较,不符合条件的实例进行过滤,从而实现全链路蓝绿发布
实施概要:只涉及当前正在发布的服务,例如,对于
〔网关〕
->〔A服务〕
->〔B服务〕
->〔C服务〕
->〔D服务〕
调用链来说,如果当前只是B服务和C服务正在实施发布,那么,只需要把B服务和C服务配置到规则策略中,其它则不需要配置。发布结束后,即B服务和C服务的所有实例都完全一致,例如,版本号都只有唯一一个,那么清除掉在配置中心配置的规则策略即可,从而进行下一轮全链路蓝绿发布
1、全链路版本匹配
蓝绿发布
nacos中增加Spring Cloud Gateway的版本匹配蓝绿发布策略配置
Data ID | discovery-guide-gateway |
Group | discovery-guide-group |
配置格式 | XML |
策略①-每个服务的版本统一指定
: 从Spring Cloud Gateway发起的调用全链路
都走1.0
版本服务,配置内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><version>1.0</version></strategy>
</rule>
访问测试 http://127.0.0.1:5001/discovery-guide-service-a/invoke/gateway
策略②-每个服务的版本分别指定
: 从Spring Cloud Gateway发起的调用走1.0版本的a服务
-> 走1.1版本的b服务
,配置内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><version>{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.1"}</version></strategy>
</rule>
如果上述表达式还未满足需求,可以采用通配表达式
方式
* - 表示调用范围为所有版本
1.* - 表示调用范围为1开头的所有版本
ex:
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><version>{"discovery-guide-service-a":"1.0*", "discovery-guide-service-b":"1.?"}</version></strategy>
</rule>
2、全链路区域匹配
蓝绿发布
nacos中增加Zuul的区域匹配蓝绿发布策略配置
Data ID | discovery-guide-zuul |
Group | discovery-guide-group |
配置格式 | XML |
策略①-每个服务的区域统一指定
: 从Zuul发起的调用全链路
都走dev区域
服务,配置内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><region>dev</region></strategy>
</rule>
访问测试 http://127.0.0.1:5002/discovery-guide-service-a/invoke/zuul
策略②-每个服务的区域分别指定
: 从Zuul发起的调用走dev区域的a服务
-> 走qa区域的b服务
,配置内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><region>{"discovery-guide-service-a":"dev", "discovery-guide-service-b":"qa"}</region></strategy>
</rule>
如果上述表达式还未满足需求,可以采用通配表达式
方式
* - 表示调用范围为所有区域
d* - 表示调用范围为d开头的所有区域
ex:
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><region>{"discovery-guide-service-a":"d*;q?", "discovery-guide-service-b":"dev"}</region></strategy>
</rule>
3、全链路IP地址和端口匹配
蓝绿发布
nacos中增加Zuul的IP地址和端口匹配蓝绿发布策略配置
Data ID | discovery-guide-zuul |
Group | discovery-guide-group |
配置格式 | XML |
策略①-每个服务的IP地址或端口统一指定
: 从Zuul发起的调用走指定IP地址和端口
/IP地址
/端口
,配置内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><!-- 注:ip不能为127.0.0.1或localhost --><!-- <address>3001</address> --><address>192.168.0.111</address><!-- <address>192.168.0.111:3001</address> --></strategy>
</rule>
访问测试 http://127.0.0.1:5002/discovery-guide-service-a/invoke/zuul
策略②-每个服务的IP地址或端口分别指定
: 从Zuul发起的调用走3001端口的a服务
->走4001端口的b服务
,配置内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><address>{"discovery-guide-service-a":"3002", "discovery-guide-service-b":"4001"}</address></strategy>
</rule>
如果上述表达式还未满足需求,可以采用通配表达式
方式
* - 表示调用范围为所有端口
3* - 表示调用范围为3开头的所有端口
ex:
<?xml version="1.0" encoding="UTF-8"?>
<rule><strategy><address>{"discovery-guide-service-a":"3*;400?", "discovery-guide-service-b":"4001"}</address></strategy>
</rule>
今日分享语句:
我发现,一个人在放弃给别人留好印象的负担之后,原来心里会如此踏实。
Nepxion Discovery(1) 全链路蓝绿发布相关推荐
- 11、Nepxion Discovery 之全链路界面操作蓝绿灰度发布
在之前的文章中讲过,用户可以通过 URL 请求以及配置中心进行灰度发布的操作,而且支持配置中心的灰度发布参数的动态变更.如果用户不希望使用上面的两种方式,Nepxion Discovery 框架还支持 ...
- Libra-Platform微服务平台之全链路蓝绿灰度发布
1.Libra-Platform 微服务平台 Libra-Platform微服务平台.基于SpringCloud(2020.0.x) + SpringCloudAlibaba(2021.x) + Sp ...
- 13、Nepxion Discovery 之 全链路调用链监控
在进行微服务调用的时候,为了系统的高可用性,不仅需要进行灰度发布验证服务的可用性.同时对于服务健康的监控也是很重要的一环.Nepxion Discovery 在这方面也有监控方面的集成,包含以下几个方 ...
- 掌门1对1微服务体系Solar第1弹:全链路灰度蓝绿发布智能化实践
掌门教育自2014年正式转型在线教育以来,秉承"让教育共享智能,让学习高效快乐"的宗旨和愿景,经历云计算.大数据.人工智能.AR/VR/MR以及现今最火的5G,一直坚持用科技赋能教 ...
- 1W字长文:蓝绿发布、金丝雀发布、滚动发布、A/B测试 原理和实操
背景: 蓝绿发布.金丝雀发布.滚动发布.A/B测试 ,是大家日常常见的发布工作.所以发布的原理和实操是一个非常.非常核心的面试知识点. 在40岁老架构师 尼恩的读者交流群(50+)中,其相关面试题是一 ...
- PolarisMesh系列文章——灰度发布系列(蓝绿发布)
蓝绿发布 什么是蓝绿发布 蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务全量转移到新版本中(两者均保持在生产环境中运行). 旧版本可以称为蓝色环境,而新版本则可称为绿色环境.一旦生产 ...
- 蓝绿发布、红黑发布、灰度发布你都分得清吗
一.全量发布 1.蓝绿发布 先通过网关断开转发A的链路,开始升级A,此时接口全部被转发到了应用集群B.升级完成后,接入A,再断开B,升级B,再连接上B. 优点:不需要保证集群额外的充足空间 缺点:升级 ...
- 灰度发布与滚动发布、蓝绿发布介绍
文章目录 灰度发布与滚动发布.蓝绿发布介绍 一.灰度发布与滚动发布.蓝绿发布介绍 1.蓝绿部署 2.滚动发布 3.灰度发布 二.灰度发布好处 三.Gitee上高热度的开源灰度发布系统 四.安装使用 灰 ...
- k8s 使用Nginx Ingress实现灰度发布和蓝绿发布
**导语:**云原生最佳实践系列,涵盖了灰度发布.弹性伸缩.集群迁移.网络通信.应用容器化改造等等场景,针对各行业面临的应用现状,提出最佳解决方案,并提供详细操作指导,希望对您有所帮助. Ingres ...
- 蚂蚁金服蓝绿发布实践
本文转载自公众号"金融级分布式架构" 提示:有童鞋小米AI音响还没有领哦! 什么是蓝绿发布 蓝绿发布 (Blue Green Deployment) 是一种平滑过渡的发布模式.蓝绿 ...
最新文章
- Centos7常用命令
- MongoDB应用场景
- linux 文件拷贝io,NIO拷贝文件真的比IO拷贝文件效率高?
- Linux实用快捷键
- “网站漏洞”成电信诈骗帮凶 专家呼吁进行“立体防护”
- Spring MVC 复习笔记01
- 即使有历史最佳年报,安踏的未来依然有三重重担
- abap中的弹出窗体函数
- php多文件压缩的功能函数
- 太难了!经营12年的明星机构都关停了,却还是有玩家疯狂入局
- sql 计算单行数据字段空值比例_如何利用工具,迅猛定位低效SQL? | 1分钟系列...
- iOS - OC NSTimeZone		时区
- cnvd与cnnvd区别_漏洞编码CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD都指什么?
- XP框架的另外选择→太极
- Verilog学习之异步复位的串联T触发器设计
- 拾叶集 文/江湖一剑客
- python三维图像切片成二维_python之画三维图像
- mac mini 开发android,Mac mini M1上成功启动Ubuntu
- 《信用管理》--信用评分方法
- Kotlin【简介】Android开发 配置 扩展
热门文章
- javascript 判断为负数_JavaScript判断数字正负数
- [Unity] material was not upgraded. There‘s no upgrader to convert {1} shader to selected pipeline报错
- unity 角度限制_Unity3D实现摄像机镜头移动并限制角度
- 看看最新的考试 c语言 noip模拟 纯llq原创作品
- shell解析HTML
- 编译java源文件(在cmd下编译)傻瓜式教学
- Mac苹果电脑在线重装系统教程
- 射频信号处理知识点点滴滴
- 算法系列之二十一:实验数据与曲线拟合
- 上海链家网租房信息分析报告