iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >什么是灰度发布?灰度发布几种类型
  • 171
分享到

什么是灰度发布?灰度发布几种类型

java服务器运维 2023-08-18 18:08:23 171人浏览 八月长安
摘要

一、方案背景介绍 1. 什么是灰度发布 灰度发布是指在 黑和白(0和1)之间,能够平滑过渡的一种发布方式。 AB test就是一种灰度发布方式,指为产品已发布A版本,在发布B版本时,在同一时间维度, 让一部分用户继续用A版本,一部分用户开始

一、方案背景介绍

1. 什么是灰度发布

灰度发布是指在 黑和白(0和1)之间,能够平滑过渡的一种发布方式。

AB test就是一种灰度发布方式,指为产品已发布A版本,在发布B版本时,在同一时间维度,
让一部分用户继续用A版本,一部分用户开始用B版本,如果用户对B版本没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B版本上面来。灰度发布可以保证整体系统的稳定,在初始灰度发布时就可以发现及调整问题,以保证其影响度。

1.2 灰度发布好处

  • 降低发布影响面: 就算出问题,也只会影响部分用户,从而可以提前发现新版本中的 bug,然后在下一次发布前提前修复,避免影响更多用户;
  • 提升用户体验: 除了能发现 bug,还能很好的收集新版本的用户使用反馈,从而提前调整系统,提升用户体验,也能给后续的产品演进带来参考价值。
  • 可以做到不停机的热迁移,版本回滚便捷(速度快)

1.3 背景

针对我们当前现状,使用灰度发布的背景:
在目前app完成测试,准备上线发布时候,就需要运维支持了,其中的挑战点在于如何不影响当前在线业务的情况下来进行升级。
系统升级就会有风险,系统宕机风险,用户使用习惯改变而造成用户流失的风险,服务错误不可用等等风险。
利用灰度发布, 降低发布带来的影响,虽然功能都在test环境测过,但毕竟没发布到prod环境,如果先让少部分用户先使用新版本,提前发现bug,或者性能问题,提前做好修复,就可以降低新版本带来的影响。
其主要思想就是把影响集中到一个点,然后再发散到一个面,出现意外情况后很容易就回退,即使影响也是可控的。

二、灰度发布几种类型

灰度发布的主要分类:

  • 金丝雀发布
  • 滚动发布
  • 蓝绿发布

1)金丝雀发布
金丝雀发布成本较低,只需要一个实例即可降低新版本存在的风险,适合缺乏足够的发布工具研发能力及成长型的小公司。但是,金丝雀发布也有缺点,当升级全部剩余实例时,如果流量过多,可能会导致服务中断。
[图片]

2)滚动发布
滚动发布则是在金丝雀发布的基础上进行的改进和优化,第一次也是使用金丝雀发布,后续则使用多批次的形式发布剩余实例,每次批次之间会进行观察,如果有问题,再进行回滚。
[图片]

3)蓝绿发布

蓝绿发布比较简单,只是对全量发布的一种优化而已,发布前不用全部停机,而是另外部署新版本全部实例,然后再把流量全部再切换到新版本。
[图片]

三、选型

在这里插入图片描述

全量发布:不建议使用

蓝绿发布:适合于对于资源预算比较充足的业务,或者是比较简单的单体应用,可以快速实现系统的整体变更

金丝雀和全链路灰度:适合需要针对特定用户或者人群进行现网请求验证的业务,可以显著减低风险

综上,建议选择 金丝雀或者全链路灰度 进行服务的升级发布。

四、灰度发布流程及实现思路

用户请求————> 网关----->服务a----->服务b
1、用户会发送请求
2、经过网关分发请求到具体的服务A
3、服务A 调用服务B
[图片]
灰度发布的核心就是路由转发,如果我们能够自定义网关到 服务A 及 服务A到服务B中间的路由策略,就可以实现用户引流,灰度发布。

五、几种实现方案

1)SpringCloud+Redis 实现灰度发布

通过网关寻找下层服务之前,通过拦截器处理请求头的参数信息,通过判断Redis数据当前请求是否符合灰度的要求,如果符合,走灰度服务;否则走正常服务。

[图片]

2)Nginx +lua + Redis 实现灰度发布

原理:使用nginx做负载均衡和反向代理,nginx内嵌lua模块,解析并执行lua编写的脚本逻辑,可以通过lua解析cookie以及访问redis,而一些灰度发布分流的策略就是放在redis里通过cookie关联

执行过程:

  • 当用户请求到达前段代理服务nginx,內嵌的lua模块解析nginx配置文件中的lua脚本代码
  • lua变量获取到客户端的ip地址,去查询redis缓存内是否有该建值,如果有返回值执行@client_test,否则执行@client
  • location @client_test把请求转发给灰度发布服务,location@client把请求转发给正常服务,服务器返回结果。
    [图片]

3)Openresty+Lua+Redis灰度发布

OpenResty 是一个基于 Nginx 与 Lua 的高性能 WEB 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项,用于方便地搭建能够处理高并发、高扩展性的动态 Web 应用、Web 服务和动态网关。
Http协议的灰度功能主要基于ngx_http_lua_module模块实现,tcp协议的灰度功能主要基于ngx_stream_lua_module模块实现。

本系统实现了对Http协议和Tcp协议的灰度功能,并且提供后台管理系统对灰度白名单进行管理。
三种方式灰度实现:
Http协议灰度实现如下功能:

  • 通过IP或者IP段验证客户端IP是否灰度白名单;
  • 通过获取header头中的userid,验证是否灰度白名单;
  • 通过获取header头中的device-id,验证是否灰度白名单。
    TCP协议灰度实现如下功能:
  • 通过IP或者IP段验证客户端IP是否灰度白名单;
    后台管理系统实现如下功能:
  • 支持对设备deviceId灰度白名单新增、删除和查询功能;
  • 支持对客户端IP灰度白名单新增、删除和查询功能;
  • 支持对用户userId灰度白名单新增、删除和查询功能,同时可以根据配置灰度策略,将满足条件的用户自动导入灰度白名单中。
    [图片]

说明:
1、当用户请求到达前端web(代理)服务器Openresty,内嵌的lua模块解析Nginx配置文件中的lua脚本代码;
2、Lua获取客户端IP地址、userId和设备ID,去查询Redis中是否有该键值,如果有则转发到灰度环境,否则转发到生产环境中;
3、后端管理系统提供可视化界面,可以管理redis中的白名单信息,包括:客户端IP白名单、userId白名单、设备Id白名单。

来源地址:https://blog.csdn.net/qq_42483473/article/details/128059257

--结束END--

本文标题: 什么是灰度发布?灰度发布几种类型

本文链接: https://www.lsjlt.com/news/374552.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么是灰度发布?灰度发布几种类型
    一、方案背景介绍 1. 什么是灰度发布 灰度发布是指在 黑和白(0和1)之间,能够平滑过渡的一种发布方式。 AB test就是一种灰度发布方式,指为产品已发布A版本,在发布B版本时,在同一时间维度, 让一部分用户继续用A版本,一部分用户开始...
    99+
    2023-08-18
    java 服务器 运维
  • SpringCloud如何实现灰度发布
    这篇文章主要讲解了“SpringCloud如何实现灰度发布”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringCloud如何实现灰度发布”吧!1.什么是灰度发布?灰度发布又称金丝雀发布...
    99+
    2023-06-30
  • java灰度发布如何实现
    Java灰度发布是指在发布新版本时,只将一部分用户引流到新版本,以验证新版本的稳定性和性能,最终再将全部用户引流到新版本。下面是几种...
    99+
    2023-10-27
    java
  • springboot怎么实现接口灰度发布
    这篇文章主要介绍“springboot怎么实现接口灰度发布”,在日常操作中,相信很多人在springboot怎么实现接口灰度发布问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”springboot怎么实现接口灰...
    99+
    2023-06-29
  • 一文带你了解Vue灰度发布
    Vue灰度发布是指在发布新版本的时候,只将新版本的一部分用户引流到新版本上,以便测试新版本的稳定性和功能是否正常。灰度发布是一种渐进...
    99+
    2023-09-22
    Vue
  • F5与Openshift集成怎么实现灰度发布
    这期内容当中小编将会给大家带来有关F5与Openshift集成怎么实现灰度发布,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、为什么要使用灰度发布什么是灰度发布灰度发布是指在黑与白之间,能够平滑过渡的一...
    99+
    2023-06-04
  • SpringCloud实现灰度发布的方法步骤
    目录1.什么是灰度发布?2.灰度发布有什么作用?3.灰度发布的实现方式:网关到服务,服务到服务3.1网关到服务代码实现3.2网关到服务代码实现1.什么是灰度发布? 灰度发布又称金丝雀...
    99+
    2024-04-02
  • 大数据中如何分析蓝绿发布、灰度发布和滚动发布
    这篇文章给大家介绍大数据中如何分析蓝绿发布、灰度发布和滚动发布,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。长期...
    99+
    2023-06-19
  • 用小程序灰度发布,整点新鲜的!
    “不就是提个小需求么?你们怎么反应那么慢?”“你们这个需求排不到App里面,不予立项”“你们产品写的需求文档不是我们要的效果啊,我们看重的是……”“排队排队排队,研发人不够,排期已经到下个月中了。”“功能测试已经通过了,但是App近期没有上...
    99+
    2023-06-05
  • 浅谈Vue灰度发布新功能的使用
    目录概述组件级别页面级别方案一 新增入口页面分发方案二 高阶组件方案方案三 动态Router.js引入总结参考什么是灰度发布?百度百科的解释如下。 灰度发布是指在黑与白之间,能够平滑...
    99+
    2024-04-02
  • SpringCloudGateway Nacos GitlabRunner全自动灰度服务搭建发布
    目录1 | 业务场景说明2 | 具体实现方案2.1 | SCG2.2 | Nacos2.3 | GitlabRunner3 | 后续 TODO4 | 使用版本说明1 | 业务场景说明...
    99+
    2023-05-15
    SpringCloudGateway Nacos GitlabRunner SpringCloudGateway Nacos GitlabRunner
  • springboot 实现接口灰度发布的实例详解
    目录前言最小化改造方式springmvc接口请求原理HandlerMapping简介RequestCondition接口定义代码实现过程1、添加一个自定义注解用于标注接口类以及接口方...
    99+
    2024-04-02
  • 阿里云服务器灰度发布设置详解
    本文将详细介绍如何在阿里云服务器上设置灰度发布,包括灰度发布的基本概念、步骤以及需要注意的事项。灰度发布是一种逐步引入新版本或新功能的方法,旨在减少对生产环境的影响,同时可以快速收集和反馈用户对新版本或新功能的反馈。 阿里云服务器灰度发布设...
    99+
    2023-11-19
    灰度 阿里 详解
  • 使用Docker Compose、Nginx和MariaDB实现PHP应用程序的灰度发布
    灰度发布是一种软件发布的策略,通过在生产环境中逐步引入新版本,来缓解发布带来的风险。在实际应用中,我们可以通过使用Docker Compose来管理容器化的应用程序,结合Nginx负载均衡和MariaDB来实现灰度发布。Docker Com...
    99+
    2023-10-21
    Docker nginx mariadb
  • 微服务架构中如何处理服务的灰度发布和重试?
    随着互联网应用越来越复杂,微服务架构已经逐渐成为建立高可用、高可扩展性并且易于维护的应用的标准。对于微服务架构的服务而言,服务的灰度发布和重试是非常关键的问题。本文将介绍微服务架构中如何处理服务的灰度发布和重试。一、什么是灰度发布在微服务架...
    99+
    2023-05-16
    微服务架构 灰度发布 重试
  • Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
    Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司。它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管理、网络连接以及安全管理等关键能力,无需修改任何代码就能够实...
    99+
    2023-06-04
  • 计算机中灰度打印指的是什么意思
    这篇文章主要介绍计算机中灰度打印指的是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!“灰度打印”是指将全部的输出内容,按照灰阶的颜色进行输出,也就是用从浅到深不同程度的灰色来打印各种彩色内容;这样可以降低打印...
    99+
    2023-06-06
  • JAVA灰度化和二值化图片的方法是什么
    这篇文章主要讲解了“JAVA灰度化和二值化图片的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA灰度化和二值化图片的方法是什么”吧!package image;&n...
    99+
    2023-06-17
  • 网页布局的常见8种类型是什么
    常见的网页布局类型有以下八种:1. 顶部导航布局:页面的导航菜单通常位于页面的顶部,方便用户快速导航。2. 侧边栏布局:将页面的主要...
    99+
    2023-08-25
    网页布局
  • laravel发布的时间是什么
    本篇内容介绍了“laravel发布的时间是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!laravel是在2011年6月9日发布的第一个...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作