聊聊灰度发布

有没有在北京面试java的小伙伴,每家公司面试问的问题都不一样,昨天面试官问到了灰度发布,一脸懵,好像在哪儿听说过,毕竟我都没发布过,之前都是项目组长在干这些事儿,所以聊聊,了解一下

什么是灰度发布

在这里插入图片描述

  • 全量发布:把旧服务kill掉,把新服务启动,这个过程就可以理解为全量发布

    • 回滚周期长

      如果我们更新完应用之后,我们做线上回归测试的时候发现有BUG,这个时候就要做回滚,过程就是把新服务kill掉,再把旧服务启动,这个过程的整个服务是挂掉的,不会提供服务的,那么在这段时间服务就是不可用的,就会导致一部分的用户群体流失,这个问题是非常严重的

    • 一些BUG可能会导致服务集群雪崩

      在实际生产中部署了不止一台机器,因为要做高可用,可能部署了两台以上的机器,假设代码中有一个内存泄漏的代码,内存泄漏可能刚刚部署看不到这个问题,在经过了几天或者一周之后,会导致我们整个新版本的服务集群全线宕机,这个问题也是非常严重的。

    我们在新版本上面去做回滚的时候会比我们BUG回归的回滚时间更长, 总的导致一个问题就是我们的服务可用性差了。

    我们在一些互联网公司,服务可用性要做到99.999%

  • 灰度发布

    • 降低发布影响面

      集群里拿出一台机器部署一个新版本,然后放一部分内测流量(用户)进来,如果在这个新的版本发现了问题之后,就可以直接把那一小部分流量直接转到我们的旧版上面,它的影响面也仅在那一部分小的群体

    • 可以做到不停机迁移

      从集群中拿一台机器更新到新版再放流量进来,这是不会影响集群中的其他服务的

    • 回滚速度快

灰度发布, 也叫金丝雀发布。是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。

具体到服务器上,实际操作中还可以做更多控制,譬如说,给最初更新的10台服务器设置较低的权重、控制发送给这10台服务器的请求数,然后逐渐提高权重、增加请求数。一种平滑过渡的思路, 这个控制叫做“流量切分”

核心组件说明

  • 注册中心: Nacos
  • 网关: SpringCloudGateway
  • 负载均衡器: Ribbon (使用SpringCloudLoadBalancer实现也是类似的)
  • 服务间RPC调用: OpenFeign

灰度发布代码实现

要实现Spring Cloud项目灰度发布技术方案有很多,重点在于服务发现,怎么将灰度流量只请求到灰度服务,这里我们会使用Nacos作为注册中心和配置中心,核心就是利用Nacos的Metadata设置一个version值,在调用下游服务是通过version值来区分要调用那个版本,这里会省略一些流程,文章末尾提供了源码地址需要自提。

在这里插入图片描述

在请求进入网关时开始对是否要请求灰度版本进行判断,通过Spring Cloud Gateway的过滤器实现,在调用下游服务时重写一个Ribbon的负载均衡器实现调用时对灰度状态进行判断。

kerwin:
  tool:
    gray:
      gateway:
        ## 是否开启灰度发布功能
        enabled: true
        ## 自定义灰度版本请求头
        grayHeadKey: gray
        ## 自定义灰度版本请求头匹配值
        grayHeadValue: gray-996
        ## 使用灰度版本IP数组
        grayIPList:
          - '127.0.0.1'
        ## 使用灰度版本城市数组
        grayCityList:
          - 本地

md看了半天,知识点有点多,有些复杂了,不是我这个水平能够掌握的

总结一下得了,别面试问的时候一句话说不出来就行

在请求进入网关时开始对是否要请求灰度版本进行判断,通过Spring Cloud Gateway的过滤器实现,在调用下游服务时重写一个Ribbon的负载均衡器实现调用时对灰度状态进行判断。

  1. 配置文件中的自定义属性

    • 是否开启灰度发布功能
    • 灰度发布的几种匹配情况
      • 自定义灰度版本请求头以及请求值 固定值 gray=gray-996
      • 灰度版本IP数组
      • 灰度版本城市数组
      • 灰度版本用户数组

部分内容引用自:
https://www.bilibili.com/video/BV1E84y1q7H7/?spm_id_from=333.337.search-card.all.click&vd_source=64c73c596c59837e620fed47fa27ada7
https://blog.51cto.com/u_6813689/11876044

华为的员工有这个经济基础,有条件比国人先走一步,做一个乐观、开放、自律、正派的人,给周边做个表率。当前一部分华为人反映出来的现象,恰恰相反,令人不安。一部分员工,不知道自己的祖坟为什么埋得这么好,还是碰到了什么神仙,突然富有后,就不知所措了。有些人表现得奢侈,张狂,在小区及社会上表现出那种咄咄逼人,不仅自己,自己的家人也趾高气扬……;一部分人对社会充满了怀疑的眼光,紧紧地捂着自己的钱袋子,认为谁都在打他的主意,对谁都不信任……。这些,都不是华为精神,这些人员不适合担任行政管理职位的,不管高低都不合适。他们所领导的团队一定萎靡不振。

任正非:要快乐地度过充满困难的一生

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值