springboot+nacos+gateway实现灰度发布的实例详解
概要
如何在微服务实现灰度发布呢?
- 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
有什么功能
首先我是自定义了一个灰度发布的sdk,引入该包可以实现,指定服务灰度发布,并指定灰度权重
指定权重后,网关调用时会根据权重打到灰度服务,当然调用的时候需要指定灰度版本
技术细节
1.在网关中引入灰度发布包
<dependency> <groupId>com.zbm.gray</groupId> <artifactId>springboot-gray-starter</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
2.网关配置灰度策略
gray: loadbalancer: enabled: true weight: 20 //灰度权重20%
3.灰度服务A
gray: loadbalancer: enabled: true version: 2 //灰度版本号
4.网关接口调用
@Autowired @Qualifier("newRestTemplate") private RestTemplate restTemplate; @GetMapping("/testGray") public String testGray(){ MultiValueMap<String, String> headers=new HttpHeaders(); headers.add("version","2"); HttpEntity<?> requestEntity = new HttpEntity<>(headers); ResponseEntity<String> exchange = restTemplate.exchange("http://test-gray/api/v1/test", HttpMethod.GET, requestEntity, String.class); return exchange.getBody(); }
说明:如果调用过程中不传递version,那么不会调用到灰度服务上
5.原理说明
首先我们需要在灰度服务引入灰度sdk,然后发布,我们正常服务不需要引入,在网关引入并配置灰度策略,那么会根据负载均衡策略和我们配置的权重选择服务。
小结
具体示例代码可见github:https://github.com/zbmzbm/gray-project
到此这篇关于springboot+nacos+gateway实现灰度发布的实例详解的文章就介绍到这了,更多相关springboot 灰度发布内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
通过FeignClient调用微服务提供的分页对象IPage报错的解决
这篇文章主要介绍了通过FeignClient调用微服务提供的分页对象IPage报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03Idea启动SpringBoot程序报错:Veb server failed to&nbs
这篇文章主要介绍了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案,文中通过代码示例介绍的非常详细,需要的朋友可以参考下2024-10-10
最新评论