灰度发布专题---2、Dubbo灰度发布

通过上面描述,我们理解了什么是灰度发布,接下来我们基于Dubbo实现灰度发布。Dubbo的灰度发布常见的方式有版本控制灰度发布、路由灰度发布、基于Apollo实现灰度发布,我们把这每种灰度发布都实现一次。
在学习Dubbo灰度发布之前,我们先看准备好的案例工程,如下图:
在这里插入图片描述

Dubbo版本控制灰度发布

在这里插入图片描述
如上图,我们对每个工程做个分析:
dubbo-provider-v1: 版本号为 1.0.0

dubbo: 
provider: protocol: dubbo version: 1.0.0 timeout: 3000 

dubbo-provider-v2: 版本号为 2.0.0

dubbo: 
provider: protocol: dubbo version: 2.0.0 timeout: 3000 

要实现不同版本的切换,我们可以根据url路径来实现,现实项目中,可以根据用户名或者IP选择调用不 同版本的服务端,当测试版本稳定后,直接将消费端全局版本调整至 2.0.0即可。
dubbo-consumer:默认使用的版本是 1.0.0
控制层调用如下:
在这里插入图片描述
测试效果如下:http://localhost:18082/car/v1/byd

Version1-比亚迪     唐     白色     车牌:byd 

测试效果如下:http://localhost:18082/car/v2/byd

Version1-比亚迪     唐     白色     车牌:byd 

Dubbo权重灰度发布

灰度发布主要目的是让少量用户测试新版本,我们可以将少部分流量引入到 dubbo-provider-v2中,此 时我们可以给 dubbo-provider-v2设置权重比例。
权重参数如下:

# 局部设置可以覆盖掉全局设置对当前局部设置进行修改的远程调用接口的设置
#
# loadbalance 设置负载均衡的方式(局部设置负载均衡):
#     random:RandomLoadBalance:权重随机调用(dubbo中默认使用的方式)
#         如果服务多实例权重相同,则进行随机调用;如果权重不同,按照总权重取随机数
#     roundrobin:RoundRobinLoadBalance:权重轮询调度算法
#         若权重相同则直接取模调用服务,循环调用多个服务,若权重不相同则根据权重的大小循环调用服务
#     leastactive:LeastActiveLoadBalance:最少活跃次数
#         取出多个实例中被调用的次数最少的实例,如果只有一个则调用其,多个且权重相同则随机返回,权重不同则通过总权重随机调用
#     consistenthash:ConsistentHashLoadBalance:一致性hash
#         相同参数的请求总是发到同一提供者
#         如果当前接收请求的提供者挂掉时,会将发往其的请求平摊到其它提供者
# 也可以在application配置文件中配置   dubbo.consumer.loadbalance=
#
#
# cluster 设置dubbo集群容错机制(局部设置):
#     failover:失败自动切换,当出现失败时重试其它服务器,通常用于读操作,但重试会带来更长延迟。可通过retries="2" 来设置重试次数(2中不包含第一次)。
#     failfast:快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作,比如新增记录
#     failsafe:失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作
#     failback:失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作
#     forking:并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。
#     broadcast:广播调用所有提供者,逐个调用,任意一台报错则报错 。通常用于通知所有提供者更新缓存或日志等本地资源信息# 可以在application配置文件中配置   dubbo.consumer.cluster=     retries=

全局配置可以在application.yml中配置:

dubbo: registry:   address: zookeeper://127.0.0.1:2181 
consumer:   # 全局性设置负载均衡方式   loadbalance: random   version: 1.0.0   cluster: failfast

如果是单独配置某一个被注入的对象:

@Reference(loadbalance = "roundrobin")
private CarService carService;

Apollo灰度发布

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。

Dubbo基于Apollo配置管理

在这里插入图片描述
我们先使用Apollo实现项目配置,此案创建三个项目 common:公共配置
在这里插入图片描述
provider:生产者配置
在这里插入图片描述
consumer:消费者配置
在这里插入图片描述

Dubbo基于Apollo灰度发布

通过创建灰度版本,您可以对某些配置做灰度测试 灰度流程为:

  1. 创建灰度版本
  2. 配置灰度配置项
  3. 配置灰度规则.如果是私有的namespace可以按照客户端的IP进行灰度,如果是公共的namespace则可 以同时按AppId和客户端的IP进行灰度
  4. 灰度发布

灰度版本最终有两种结果:全量发布和放弃灰度 全量发布:灰度的配置合到主版本并发布,所有的客户端 都会使用合并后的配置 放弃灰度:删除灰度版本,所有的客户端都会使用回主版本的配置 注意事项: 1.如 果灰度版本已经有灰度发布过,那么修改灰度规则后,无需再次灰度发布就立即生效
在这里插入图片描述

灰度配置

如下图,如果测试版本有额外的配置,我们可以点击新增灰度配置
在这里插入图片描述
新增配置后,点击灰度发布才会生效
在这里插入图片描述

灰度规则配置

我们可以让指定的IP的服务为灰度版本,如下图可以选择当前访问过服务的IP,如果有其他指定IP,可 以手动直接输入,手动输入多个IP以逗号隔开,当用户访问这些IP指定的服务时,对应配置才会生效。
在这里插入图片描述
手动输入IP
在这里插入图片描述

全量灰度发布

全量灰度发布在现实工作中是指灰度版本没有问题了,需要把所有服务的版本全部切换成完成测试的灰 度版本,我们点击全量发布即可,全量发布的时候,我们可以把灰度版本删除。
在这里插入图片描述

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

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

相关文章

5款最常用的Android测试框架(含代码示例)

前言 今天,我们就要说说5款最常用的Android测试框架,并且每个框架都给出了基本的代码示例。 在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看…

csdn博客编写技巧

随便记录一下csdn博客编写时候用的到技巧,以作备忘。 1. 表格 1.1 Markdown-Table-Generator 这个是csdn编辑器中,工具栏自带的表格用法。主要优点是比较直观,缺点是无法设置表格中行列的宽高。 用法: | 表头一 | 表头二 | |-…

分享错误代码0x8007007b的解决办法,有效解决错误代码0x8007007b

错误代码0x8007007b是Windows操作系统中常见的错误代码之一。出现这样的错误代码0x8007007b通常与许可证问题相关,并表示Windows无法激活或验证已安装的操作系统副本,导致应用程序不能正常运行。下面是关于错误代码0x8007007b的解决办法希望能帮助大家解…

Vue3-Pinia

Pinia是什么 Pinia是Vue的最新状态管理工具,是Vuex的替代品 比Vuex更大的优势在于: 1.提供更加简单的API(去掉了mutation) 2.提供符合,组合式风格的API(和Vue3新语法统一) 3.去掉了modules…

微信小程序nodejs+vue+uniapp视力保养眼镜店连锁预约系统

作为一个视力保养连锁预约的网络系统,数据流量是非常大的,所以系统的设计必须满足使用方便,操作灵活的要求。所以在设计视力保养连锁预约系统应达到以下目标: (1)界面要美观友好,检索要快捷简易…

GAN:ImprovedGAN-训练GAN的改进策略

论文:https://arxiv.org/abs/1606.03498 代码:https://github.com/openai/improved_gan 发表:NIPS 2016 一、文章创新 1:Feature matching:特征匹配通过为生成器指定新目标来解决GANs的不稳定性,从而防止…

亚马逊低价产品广告怎么打?亚马逊造成成本高的原因——站斧浏览器

亚马逊低价产品广告怎么打? 设置合适的出价:在低价自动广告中,设置适当的出价是关键。过高的出价可能导致广告成本过高,而过低的出价可能使广告曝光度不足。可以根据产品的竞争情况和预算来调整出价,找到一个平衡点。…

Mysql更新varchar存储的Josn数据

Mysql更新varchar存储的Josn数据 记录一次mysql操作varchar格式存储的json字符串数据 1、检查版本 -- 版本5.7以上才可以能执行json操作 select version(); 2、创建测试数据 -- 创建测试表及测试数据 CREATE TABLE test_json_table AS SELECT UUID(), {"test1": …

详解HTTP协议(介绍--版本--工作过程--Fiddler 抓包显示--请求响应讲解)

目录 一.HTTP协议的介绍 1.1HTTP是什么? 1.2HTTP版本的演变 二.HTTP的工作过程 三.使用Fiddler抓包工具 3.1简单讲解Fiddler 3.2Fiddler工作的原理 3.3抓包结果分析 四.HTTP请求 4.1认识URL 4.2关于URL encode 4.3认识方法 4.3.1认识get和post 4.3.…

Docker 安装kafka 并创建topic 进行消息通信

Apache Kafka是一个分布式流处理平台,用于构建高性能、可扩展的实时数据流应用程序。本文将介绍如何使用Docker容器化技术来安装和配置Apache Kafka。 一、使用镜像安装 1、kafka安装必须先安装Zookpper 2、下载镜像 docker pull wurstmeister/kafka 3、查看下载…

揭秘!9个月完成亚运会的整体数字化观测

项目背景与业务场景 2023 第 19 届亚运会在杭州举办,这将提高杭州的国际知名度,促进杭州经济、社会的全面发展,并将进一步推动奥林匹克运动在中国的发展,并且提升杭州城市形象和国际影响力。为亚运村村民提供便捷周到的服务和丰富…

不确定度校准和可靠性图简介

图片来源 项杰 一、说明 不确定性校准是机器学习中最容易被误解的概念之一。它可以概括为这个简单的问题:“鉴于上述下雨的可能性,您是否带伞?” 我们在日常生活中使用主观概率和不确定性校准的概念,但没有意识到它们。对于不确定…

第四节HarmonyOS 熟知开发工具DevEco Studio

一、设置主体样式 默认的代码主题样式是黑暗系的,如下图所示: 如果你不喜欢,可以按照一下步骤进行修改: 左上角点击Flie->Settings->Appearance&Behavior->Appearance,点击Theme,在弹出的下拉…

XXDD——UUII(交互设计)

今天我们再次回到Adobe全家桶的怀抱,今天介绍的这一位成员,是最直接帮助大家进行平面交互式设计的软件。他就是XD~ Adobe XD全称Adobe Experience Design CC, 官方版跨平台支持Win10 与 macOS,并且所有用户均可免费下载使用。Adob…

Linux fork笔试练习题

1.打印结果&#xff1f; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main() {int i0;for(;i<2;i){fork();printf("A\n");}exit(0); } 结果打印 A A A A A A 2.将上面的打印的\n去掉,结果如何? printf("…

Java小游戏 王者荣耀

GameFrame类 所需图片&#xff1a; package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayLis…

Linux处理文本常见命令

目录 1 vim 2 echo 3 tee 4 cat 1 vim 编辑文本类的内容&#xff0c;使用的时候 vim [文件名]&#xff0c;比如 vim A.txt 进入vim界面后&#xff0c;按i可以开启编辑模式&#xff0c;按ESC可以关闭编辑模式&#xff0c;关闭编辑模式后:wq!保存并退出 2 echo ech…

【C语言加油站】函数栈帧的创建与销毁 #保姆级讲解

函数栈帧的创建与销毁 导言一、计算机硬件1.冯•诺依曼机基本思想2.冯•诺依曼机的特点&#xff1a;3.存储器3.1 分类3.2 内存的工作方式3.3 内存的组成 4.寄存器4.1 基本含义4.2 寄存器的功能4.3 工作原理4.4 分类4.4.1 通用寄存器组AX(AH、AL)&#xff1a;累加器BX(BH、BL)&a…

Git——Git应用入门

将会介绍以下知识&#xff1a; 搭建Git环境和创建Git版本库&#xff08;init、clone&#xff09;。文件添加、状态检查、创建注释和查看历史记录。与其他Git版本库交互&#xff08;pull、push&#xff09;。解决合并冲突。创建分支列表、列表切换和合并。创建标签。 1、版本控…

AI技术如何助力实现智慧交通

人工智能的常见优势在于能够实时、高效地分析处理大量的数据&#xff0c;并结合算法模型提供个性化、专业化的服务。在智慧交通方面&#xff0c;人工智能同样可以发挥专长&#xff0c;助力打造智能高效的交通运输网络&#xff0c;本篇就为大家简单介绍一下AI技术如何促进智慧交…