手机网站如何做,建设电子商务网站所应用的技术,潍坊网站,龙岩长汀小程序开发通过上面描述#xff0c;我们理解了什么是灰度发布#xff0c;接下来我们基于Dubbo实现灰度发布。Dubbo的灰度发布常见的方式有版本控制灰度发布、路由灰度发布、基于Apollo实现灰度发布#xff0c;我们把这每种灰度发布都实现一次。 在学习Dubbo灰度发布之前#xff0c;我…通过上面描述我们理解了什么是灰度发布接下来我们基于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 设置负载均衡的方式局部设置负载均衡
# randomRandomLoadBalance:权重随机调用(dubbo中默认使用的方式)
# 如果服务多实例权重相同则进行随机调用如果权重不同按照总权重取随机数
# roundrobinRoundRobinLoadBalance:权重轮询调度算法
# 若权重相同则直接取模调用服务循环调用多个服务若权重不相同则根据权重的大小循环调用服务
# leastactiveLeastActiveLoadBalance:最少活跃次数
# 取出多个实例中被调用的次数最少的实例如果只有一个则调用其多个且权重相同则随机返回权重不同则通过总权重随机调用
# consistenthashConsistentHashLoadBalance:一致性hash
# 相同参数的请求总是发到同一提供者
# 如果当前接收请求的提供者挂掉时会将发往其的请求平摊到其它提供者
# 也可以在application配置文件中配置 dubbo.consumer.loadbalance
#
#
# cluster 设置dubbo集群容错机制局部设置
# failover失败自动切换当出现失败时重试其它服务器通常用于读操作但重试会带来更长延迟。可通过retries2 来设置重试次数(2中不包含第一次)。
# failfast快速失败只发起一次调用失败立即报错通常用于非幂等性的写操作比如新增记录
# failsafe失败安全出现异常时直接忽略。通常用于写入审计日志等操作
# failback失败自动恢复后台记录失败请求定时重发。通常用于消息通知操作
# forking并行调用多个服务器只要一个成功即返回。通常用于实时性要求较高的读操作但需要浪费更多服务资源。可通过 forks2 来设置最大并行数。
# 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灰度发布
通过创建灰度版本您可以对某些配置做灰度测试 灰度流程为:
创建灰度版本配置灰度配置项配置灰度规则.如果是私有的namespace可以按照客户端的IP进行灰度如果是公共的namespace则可 以同时按AppId和客户端的IP进行灰度灰度发布
灰度版本最终有两种结果:全量发布和放弃灰度 全量发布:灰度的配置合到主版本并发布所有的客户端 都会使用合并后的配置 放弃灰度:删除灰度版本所有的客户端都会使用回主版本的配置 注意事项: 1.如 果灰度版本已经有灰度发布过那么修改灰度规则后无需再次灰度发布就立即生效
灰度配置
如下图如果测试版本有额外的配置我们可以点击新增灰度配置 新增配置后点击灰度发布才会生效
灰度规则配置
我们可以让指定的IP的服务为灰度版本如下图可以选择当前访问过服务的IP如果有其他指定IP可 以手动直接输入手动输入多个IP以逗号隔开当用户访问这些IP指定的服务时对应配置才会生效。 手动输入IP
全量灰度发布
全量灰度发布在现实工作中是指灰度版本没有问题了需要把所有服务的版本全部切换成完成测试的灰 度版本我们点击全量发布即可,全量发布的时候我们可以把灰度版本删除。