灰度发布框架Discovery介绍

本文介绍了灰度发布(金丝雀发布)和蓝绿发布的概念、优缺点及实施图,强调它们作为无损发布的策略。通过配置中心实现灰度配置,降低了操作成本。同时,文章提供了性能测试报告,展示了在不同场景下的应用效果,并给出了优化建议。
摘要由CSDN通过智能技术生成

概述

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。

  1. 可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

  2. 降低产品升级所影响的用户范围

在前几篇的章节写了spring-cloud-gray的灰度框架介绍,但是为了做一下对比,我们对Discovery有进行了详细的调研,git地址:https://github.com/Nepxion/Discovery
此框架对Spring Cloud & Spring Cloud Alibaba,Discovery服务注册发现、Ribbon负载均衡、Feign和 RestTemplate调用、Spring Cloud Gateway和Zuul过滤等组件进行了全方位增强的开源解决方案,更贴近企业级需求,更具有企业级的插件引入、开箱即用特征。

原理图

在这里插入图片描述
因为他是通过配置中心下发灰度配置,所以不需要额外引入控制台,只需要在应用的业务配置中增加灰度配置即可。

概念说明

蓝绿发布

蓝绿发布 Blue-Green Deployment

  1. 概念
    1. 不停机旧版本,部署新版本,通过用户标记将流量在新版本和老版本切换,属无损发布
  2. 优点
    1. 新版本升级和老版本回滚迅速。用户可以灵活控制流量走向
  3. 缺点
    1. 成本较高,需要部署两套环境(蓝/绿)。新版本出现问题,切换不及时,会造成部分故障

img

灰度发布

灰度发布 Gray Release(又名金丝雀发布 Canary Release)

  1. 概念
    1. 不停机旧版本,部署新版本,低比例流量(例如:5%)切换到新版本,高比例流量(例如:95%)走旧版本,通过监控观察无问题, 逐步扩大范围,最终把所有流量都迁移到新版本上,下线旧版本。属无损发布
  2. 优点
  3. 灵活简单,不需要用户标记驱动。安全性高,新版本如果出现问题,只会发生在低比例的流量上
  4. 缺点
  5. 流量配比递增的配置修改,带来额外的操作成本。用户覆盖狭窄,低比例流量未必能发现所有问题

img

滚动发布

  1. 概念
    1. 每次只升级一个或多个服务,升级完成监控观察,不断执行这个过程,直到集群中的全部旧版本升级到新版本。停止旧版本的过程 中,无法精确计算旧版本是否已经完成它正在执行的工作,需要靠业务自身去判断。属有损发布
  2. 优点
    1. 出现问题影响范围很小,只会发生在若干台正在滚动发布的服务上
  3. 缺点
    1. 发布和回滚需要较长的时间周期。按批次停止旧版本,启动新版本,由于旧版本不保留,一旦全部升级完毕后才发现问题,则无法快速回滚,必须重新降级部署

img

  1. 实施图

    1. 全链路域网关并行蓝绿灰度发布

使用场景,图中文字描述很清楚
img

  1. 全链路非域网关并行蓝绿灰度发布

使用场景,图中文字描述很清楚img

  1. 全链路全局订阅下并行蓝绿灰度发布

使用场景,图中文字描述很清楚img

  1. 性能测试报告

    1. 准备两台机器部署Spring Cloud应用
    2. 准备一台机器部署网关(Spring Cloud或者Zuul)
    3. 准备一台机器部署压测工具
    服务配置数目
    Spring cloud gateway16c 32G1
    Zuul 1.x16c 32G1
    Service4c 8G2
    1. 优化方式
    • Spring Cloud Gateway,不需要优化
    • Zuul 1.x,优化如下:
    zuul.host.max-per-route-connections=1000 
    
    zuul.host.max-total-connections=1000 
    
    zuul.semaphore.max-semaphores=5000
    
    1. 基于WRK极限压测,报告如下

img
压测报告可见对应用资源效果基本在0.3%到0.5%之间,可以忽略不计。

官方文档写的非常详细读者可以参考官方文档。

Nepxion Discovery【探索】使用指南,基于Spring Cloud Greenwich版、Finchley版和Hoxton版而 制作,对于Edgware版,使用者需要自行修改。使用指南主要涉及的功能包括: 基于Header传递的全链路灰度路由,网关为路由触发点。采用配置中心配置路由规则映射在网 关过滤器中植入Header信息而实现,路由规则传递到全链路服务中。路由方式主要包括版本和 区域的匹配路由、版本和区域的权重路由、基于机器IP地址和端口的路由 基于规则订阅的全链路灰度发布。采用配置中心配置灰度规则映射在全链路服务而实现,所有 服务都订阅某个共享配置。发布方式主要包括版本和区域的匹配发布、版本和区域的权重发布 全链路服务隔离。包括注册隔离、消费端隔离和提供端服务隔离,示例仅提供基于Group隔 离。除此之外,不在本文介绍内的,还包括: 注册隔离:黑/白名单的IP地址的注册隔离、最大注册数限制的注册隔离 消费端隔离:黑/白名单的IP地址的消费端隔离 全链路服务限流熔断降级权限,集成阿里巴巴Sentinel,有机整合灰度路由,扩展LimitApp的 机制,通过动态的Http Header方式实现组合式防护机制,包括基于服务名、基于灰度组、基于 灰度版本、基于灰度区域、基于机器地址和端口等防护机制,支持自定义任意的业务参数组合 实现该功能。支持原生的流控规则、降级规则、授权规则、系统规则、热点参数流控规则 全链路灰度调用链。包括Header方式和日志方式,Header方式框架内部集成,日志方式通过 MDC输出(需使用者自行集成) 同城双活多机房切换支持。它包含在“基于Header传递的全链路灰度路由”里 数据库灰度发布。内置简单的数据库灰度发布策略,它不在本文的介绍范围内 灰度路由和发布的自动化测试 license Apache 2.0 maven central v5.4.0 javadoc 5.4.0 build passing Docker容器化和Kubernetes平台的无缝支持部署
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值