SpringCloudGateway实现金丝雀发布_05

接上一篇:SpringCloudGateway 集成 nacos 整合实现动态路由

文章目录

          • 一、启动服务
            • 1. 启动Gateway-Serv模块服务
            • 2. 启动auth-serv认证授权服务
            • 3. 启动product-serv服务
            • 4. 启动product-serv服务2
          • 二、修改nacos配置
            • 2.1. 配置改造
            • 2.2. 配置发布
          • 三、测试验证
            • 3.1. 访问产品模块
            • 3.2. 获取toeken
            • 3.3. 携带toekn访问产品模块
            • 3.4. 增加访问次数
          • 四、不联网大厂产品发布策略
            • 4.1. 蓝绿发布
            • 4.2. 金丝雀发布
            • 4.3. 灰度发布
            • 4.4. A/B测试
            • 4.5. 测试发布策略区别

一、启动服务
1. 启动Gateway-Serv模块服务

在这里插入图片描述

2. 启动auth-serv认证授权服务

在这里插入图片描述

3. 启动product-serv服务

在这里插入图片描述

4. 启动product-serv服务2

端口由9000改为9001

server:port: 9001
spring:cloud:nacos:discovery:service: product-servserver-addr: localhost:8848

controller访问改造
IPhone 12改为我是新版本

package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProductController {//http://localhost:9000/product/" + productId@GetMapping("/product/{productId}")public String getProductName(@PathVariable Integer productId) {return "IPhone 12";}
}
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProductController {//http://localhost:9000/product/" + productId@GetMapping("/product/{productId}")public String getProductName(@PathVariable Integer productId) {return "我是新版本";}
}

开启一个应用以不同端口启动
在这里插入图片描述
启动product-serv服务9001
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、修改nacos配置
2.1. 配置改造

spring:cloud:gateway:routes:- id: producturi: lb://product-servpredicates:- Host=product.gblfy.com**- id: authuri: lb://auth-servpredicates:- Path=/oauth/token- id: skilluri: http://localhost:13000predicates:- Path=/skilldatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/auth-serv?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456

现配置

spring:cloud:gateway:routes:- id: product_v1uri: lb://localhost:9000/predicates:- Path=/product/*- Weight=service1, 95- id: product_v2uri: lb://localhost:9001/predicates:- Path=/product/*- Weight=service1, 5- id: authuri: lb://auth-servpredicates:- Path=/oauth/tokendatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/auth-serv?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456
2.2. 配置发布

在这里插入图片描述

三、测试验证
3.1. 访问产品模块

不请求auth-serv模块获取otken,直接通过网关访问产品模块

在这里插入图片描述
从上图可以看出访问需要认证授权

3.2. 获取toeken

http://localhost:8081/oauth/token
通过认证授权中心获取toekn

grant_type:password
client_id:app
client_secret:app
username:ziya
password:111111

在这里插入图片描述

3.3. 携带toekn访问产品模块

携带toekn通过网关服务访问产品模块
http://product.gblfy.com:8081/product/1
在这里插入图片描述
从图中可以看出,获取token后,通过网关服务可以正常请求产品模块,并有响应报文。

3.4. 增加访问次数

在这里插入图片描述

会发现95%的请求会请求老版本,5%请求会请求新的版本!

四、不联网大厂产品发布策略
4.1. 蓝绿发布

在这里插入图片描述

4.2. 金丝雀发布

在这里插入图片描述
从图中可以看到,将发布区域的一小部分区域定义为金丝雀区域,通过线上运行服务(少量节点)中加入少量新版本的服务,也就是我们所说的金丝雀这块区域,然后从少量的版本中,快速的得到一个反馈,我们将部分的流量导入到小部分的金丝雀区域版本当中,来快速得到反馈,尝试我们这次上线的内容究竟有没有问题,效果好不好,根据反馈再决定,剩余的节点是否要迁移到新的版本。

4.3. 灰度发布

通过切换线上并存版本之间路由的权重,逐步从一个版本切换为另一个版本的过程。
在这里插入图片描述
所有的用户发起请求通过路由到以前的版本,新的版本没有流量进来。
将95%的流量访问旧的版本上,将5%的流量访问新的版本上,来验证新的版本是否有大量报错,因为我的新版本上线之后,如果存在bug,只影响5%的用户的体验,大部分用户不会受到影响,这样是一个比较稳妥的实验室做法。
在这里插入图片描述
当我验证新版本后没问题后,将100%的流流量全部切换到新版本当中。将旧版本废弃掉。

在这里插入图片描述
金丝雀发布更倾向于一个快速反馈的一个流程,而灰度发布更倾向于从一个版本切换到另一个版本的平稳切换的一个目的。

4.4. A/B测试

在这里插入图片描述

4.5. 测试发布策略区别

待完善

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo 在 K8s 下的思考

序言 Dubbo在2011开源之后,一直是国内最受欢迎的RPC框架,之后spring boot和Spring Cloud的面世,助推了微服务的火热程度。计算机的世界变化很快,自从容器和K8s登上舞台之后,给原有的RPC领域带来了很大的挑战。这个文章…

containerd与安全沙箱的Kubernetes初体验

containerd是一个开源的行业标准容器运行时,关注于简单、稳定和可移植,同时支持Linux和Windows。2016年12月14日,Docker公司宣布将Docker Engine的核心组件 containerd 捐赠到一个新的开源社区独立发展和运营。阿里云,AWS&#xf…

Seata 单机环境搭建_01

文章目录一、整合版本说明1. 毕业版本依赖关系(推荐使用)2. 组件版本关系3. 演示版本二、部署单机 TC Server2.1. 下载Seata2.2. 解压缩2.3. 启动2.4. 监听日志2.5. 启动命令讲解一、整合版本说明 1. 毕业版本依赖关系(推荐使用) Spring Cloud VersionSpring Cloud Alibaba V…

学生成绩管理系统java+mysql+swing入门级项目开发

夫陶公清风千古,余又何人,敢称庶几 代码已移至Gitee : https://gitee.com/BreezAm/edu-student 文章目录简要:登陆运行效果主界面运行效果图界面设置运行效果图网络配置界面运行效果图菜单栏运行效果图登陆窗体实现窗体界面设置功…

干货 | 大白话彻底搞懂 HBase RowKey 详细设计

作者 | 且听风吟责编 | Carol封图 | CSDN 付费下载于视觉中国前言RowKey作为HBase的核心知识点,RowKey设计会影响到数据在HBase中的分布,还会影响我们查询效率,所以RowKey的设计质量决定了HBase的质量。是咱们大数据从业者必知必会的&#xf…

Knative 实战:如何在 Knative 中配置自定义域名及路由规则

目前 Knative 中默认支持是基于域名的转发,但域名默认格式是:"{{.Name}}.{{.Namespace}}.{{.Domain}}"(这个可以在 config-network 配置)。但对于用户来说并不能指定全域名。 另外一个问题就是基于Path 转发的能力&…

混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践

摘要:2019杭州云栖大会大数据企业级服务专场,由斗鱼大数据高级专家张龙带来以 “混合云模式下 MaxComputeHadoop 混搭大数据架构实践” 为题的演讲。本文讲述了从 Apache Hadoop 阶段到 Cloudera CDH 阶段斗鱼大数据架构的发展历程。提出了上云过程中斗鱼…

mybatisplus 一次性执行多条SQL语句

文章目录一、Mysql数据库1. Url2. xml映射文件二、Oracle数据库2.1. 关键点2.2. xml映射文件一、Mysql数据库 关键点:在url后面添加&allowMultiQueriestrue,sql后面添加分号; 1. Url 案例: url: jdbc:mysql://localhost:3306/afsdb?…

没错!Python程序员正在消失,HR:你才知道?

Python为什么这么火?学了Python能干什么?Python程序员有前途吗?几乎所有人脑子里都有这个疑问,感觉现在铺天盖地都是Python的消息,就连刷抖音都能刷到Python,Python已经火出圈了!Python为什么这…

swing中模态对话框(setModal(true))和显示对话框(setVisible(true))的编写顺序

今天给大家分享一个鄙人在编程中总结出的一个易错点和最容易让人感到困惑的一个知识点: 当你要从一个窗体跳转到另一个窗体,你把跳转目标的窗体设成模态对话框,设计成模态对话框就是禁止父窗体与子窗体之间操作,简单说就是当调用子…

Service Mesh 初体验

前言 计算机软件技术发展到现在,软件架构的演进无不朝着让开发者能够更加轻松快捷地构建大型复杂应用的方向发展。容器技术最初是为了解决运行环境的不一致问题而产生的,随着不断地发展,围绕容器技术衍生出来越来越多的新方向。 最近几年&a…

mybatisplus 一次性执行多条SQL语句插入(Mysql篇)

文章目录一、数据库部分1. 创建数据库2. 初始化表结构二、代码部分2.1. controller2.2. mapper接口2.3. 映射文件2.4. 参数封装三、测试验证3.1. 发起请求3.2. 查看数据库3.3. 配置文件部分一、数据库部分 1. 创建数据库 创建more-insert 2. 初始化表结构 -- 一次性插入多张…

带领国产数据库走向世界,POLARDB底层逻辑是什么?

POLARDB 是阿里云自主研发的下一代云原生分布式数据库,100%兼容MySQL、PostgreSQL等开源数据库,高度兼容Oracle语法,使用RDS服务的客户不需要修改应用代码,可以一键迁移到POLARDB,体验更大的容量,更高的性能…

基于java+swing+mysql+JFeeChart的企业人力资源管理系统(1)

文章目录一,前言二,项目运行图(1)主界面(管理员界面)(2)员工资料运行图(3)全部员工查看运行图(4)部门管理运行图(5&#x…

十年架构师:我是这样手写Spring的,用300行代码体现优雅之道

起源Spring作为一个开源框架,于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是…

深度 | 打败围棋冠军后,机器智能下一步能战胜黑客吗?

阿里妹导读:从深蓝战胜象棋冠军到AlphaGo战胜围棋冠军,每一次机器智能在特定领域战胜人类,都会引发整个社会的广泛关注。洞察了棋类博弈真相的机器智能,接下来能洞察网络安全的真相并且在黑客博弈中战胜人类吗?在机器智…

mybatisplus 一次性执行多条SQL语句插入(Oracle篇)

文章目录一、数据库部分1. 创建数据库2. 初始化表结构二、代码部分2.1. controller2.2. mapper接口2.3. 映射文件2.4. 参数封装三、测试验证3.1. 发起请求3.2. 查看数据库3.3. 配置文件部分一、数据库部分 1. 创建数据库 创建more-insert 2. 初始化表结构 -- 一次性插入多张…

从310到蚂蚁森林,蚂蚁金服在线图计算的创新与实践

蚂蚁金服过去十五年,重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑。在 2019 杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向未来的金融技术创新和参会者分享。我们将其中的优秀演讲…

Seata 与 Nacos注册中心整合实现集群环境搭建_02

接上一篇:Seata 单机环境搭建_01 文章目录一、整体架构二、安装步骤2.1. 创建数据库2.2. 初始化表结构2.3. 修改配置文件2.4. 调整数据库驱动2.5. 修改配置中心三、 启动和验证3.1. 启动nacos3.2. 启动TC Server3.3. 验证高可用一、整体架构 我们来学习部署集群 Se…

趣谈程序员真香定律:源码即设计

来源 | 码砖杂役责编 | Carol封图 | CSDN 付费下载自视觉中国我们经常谈论架构,讨论设计,却甚少关注实现和代码本身,架构和设计固然重要,但要说代码本身不重要,我不同意,Robert C.Martin大叔也不同意&#…