灰度发布

phenix-fledgling Lv5

1.什么是灰度发布

​ 灰度发布是指A/B testing,即让一部分用户继续用产品特性a,一部分开始用产品特性b,如果用户对b没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到b上面。

2.灰度发布流程

![image-20210323154759087](/Users/kingboom/Library/Application Support/typora-user-images/image-20210323154759087.png)

相关解释:

​ 选定策略:包括用户规模、发布频率、功能覆盖率、回滚策略、运营策略、新旧系统部署策略等;

​ 筛选用户:包括用户特征、用户数量、用户常用功能、用户范围等

​ 部署系统:部署新系统、部署用户行为分析系统、设定分流规则、运营数据分析、分流规则微调

​ 发布总结:用户行为分析报告、用户问卷调查、社会化媒体意见收集、形成产品功能改进列表

3.Eureka实现灰度发布(优雅下线)

  1. 直接停掉服务。

    ​ 默认情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。但这种做法的不好之处在于, 客户端已经停止了运行,但仍然在注册中心的列表中。 虽然通过一定的负载均衡策略或使用熔断器可以让服务正常进行,但有没有方法让注册中心马上知道服务已经下线呢?

  2. 为了让注册中心马上知道服务要下线,可以向euraka注册中心发送delete请求

        格式为/eureka/apps/{application.name}
    
  3. 客户端主动通知注册中心下线

    ​ 如果你的eureka客户端是是一个spring boot应用,可以通过调用以下代码通知注册中心下线。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    DiscoveryManager.getInstance().shutdownComponent();
    @RestController
    public class HelloController {
    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String index() {
    java.util.List<ServiceInstance> instances = client.getInstances("hello-service");
    return "Hello World";
    }

    @RequestMapping(value = "/offline", method = RequestMethod.GET)
    public void offLine(){
    DiscoveryManager.getInstance().shutdownComponent();
    }
    }
  • 标题: 灰度发布
  • 作者: phenix-fledgling
  • 创建于 : 2021-03-23 15:13:43
  • 更新于 : 2026-07-29 02:35:18
  • 链接: https://blog.xugua.xyz//post/灰度发布.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论