美文网首页
灰度发布

灰度发布

作者: Robin92 | 来源:发表于2021-09-09 21:28 被阅读0次

没做过灰度发布,但项目中存在这部分代码。最近看到一些概念,就做一番整理,也方便以后回头看。

两种灰度发布的方式

  1. 分批部署
  2. 按业务规则

分批部署灰度发布

分批部署的方式主要用于降低新版本服务对业务产生影响的风险。一旦发现重大问题,直接回退。如果发现得及时,可保证只影响部分客户。

服务部署期间可通过观测服务上报的 metrics 的方式以发现问题。

为了最小化对客户服务的影响范围,对于具有很多实例的系统,建议通过指数增量的方式来分组升级。比如,系统有15台实例(可能是物理机或是容器),按 1、2、4、8 进行分组,进行逐步升级。

为什么推荐指数的方式分批升级呢?这是因为,一来在实例数过多时,批次也不会太多,比如有 1000 多个实例,那么也就需要分 10 个组(2^10>1000);二来对业务的影响范围最初会很小,比如 1000 个实例,最初部署一个时仅影响 1/1000 的业务,但如果按均分 10 组做灰度时,一开始就会影响 1/10 的业务,当总业务量为千万级别时,影响不可小觑。

通过业务规则做灰度

通过业务规则做灰度一般会让新旧两种版本共存一段时间做业务分流,来观察新版本是否有bug,按不同的规则进行灰度也可以用在做版本升级的场景。

业务规则可以有很多种:

  • 按地域
  • 按比例
  • 按白名单
  • 按某业务字段
  • 按设备
  • ……

用哈希算法做分发时

求哈希可用的算法非常多,比如 md5,crc32,sha1等等,挑选算法时需要考虑以下两个规则:

  1. 对 CPU 的使用越低越好
  2. 分布是否均匀

业界使用较多的算法是murmurhash(Redis中默认哈希就是用它)。它的性能比 md5、sha1 有三倍以上性能的提升;并且分布相当均匀。感兴趣的可以自己测试一下。

相关文章

  • 灰度发布用户选取

    近日接触的项目涉及到“灰度发布”的概念,这是第一次接触灰度发布,因此对灰度发布用户选取的方式十分好奇。“灰度发布(...

  • Openshift上使用Nginx Pod作灰度发布

    参考文章:使用 Nginx 实现灰度发布 什么是灰度发布 【百度百科】灰度发布(又名金丝雀发布)是指在黑与白之间,...

  • 灰度发布discovery原理源码分析及多发布分组设计与实现

    关键字:saas灰度 灰度发布 装饰模式 桥接模式 spring cloud 公司 saas 平台,灰度发布用于先...

  • 浅谈灰度发布

    什么是灰度发布 所谓灰度发布就是将软件新功能版本先发布到灰度区进行可控范围的验证,如果验证结果良好,再进行正式发布...

  • 实现一套灰度发布系统需要考虑哪些问题?

    要了解一个灰度发布系统的功能,个人觉得有必要先了解灰度发布的概念定义和灰度发布流程,从概念和流程中明确灰度的目的并...

  • 什么是灰度发布,灰度测试。

    什么是灰度发布? 灰度发布,又名金丝雀发布,或者灰度测试,是指在黑与白之间能够平滑过渡的一种发布方式。在其上可以进...

  • 灰度发布

    灰度发布:灰度很简单,发布很复杂 - 程序人生的博客 - CSDN博客 灰度发布常见一般有三种方式 - 蒋大帅-蒋...

  • 如何进行灰度发布,考虑啥

    灰度发布的定义: 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部...

  • 灰度发布

    灰度发布 更新日志: 一、定义 按照一定策略选取部分用户,让他们先行体验新版本的应用,通过收集这部分用户对新版本应...

  • 灰度发布

    所谓灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部用户继续用A...

网友评论

      本文标题:灰度发布

      本文链接:https://www.haomeiwen.com/subject/akswwltx.html