开放平台灰度发布分享

简介: #灰度发布 指能够达到平滑过渡的一种发布方式。 灰度发布的目的主要有: - 规避一定的发布风险,降低产品迭代升级所影响的范围。 - 分流控制,灵活选择用户参与产品测试。逐步扩大用户。 - 快速获取用户的使用情况,完善产品功能,提升产品质量。

首先上几张网上来的图片做下对比,作为开题;

2010年的facebook的首页

10

2015年的facebook的首页

15

这么长时间,facebook的首页风格、排版基本没太大变化。

其实在2012年,facebook进行首页升级改造,只是在升级版首页灰度期间数据表现始终较老版有明显差距。

12

最终 facebook 忍痛放弃上线众望所归的新版首页。

灰度发布

指能够达到平滑过渡的一种发布方式。

灰度发布的目的主要有:

  • 规避一定的发布风险,降低产品迭代升级所影响的范围。
  • 分流控制,灵活选择用户参与产品测试。逐步扩大用户。
  • 快速获取用户的使用情况,完善产品功能,提升产品质量。

其中的要点是能够灵活精准选取参与使用的用户,全面准确的获取灰度用户使用情况信息,分析、总结、完善;达到降低发布风险、减少bug带来的影响。

上线流程是怎样的?

环境.jpg

一段时期内,灰度环境与正式环境并行处理用户请求。可以认为是同层级的环境,灰度范围根据使用情况,逐步增加用户使用比率,最终完全替代老的系统或功能。

用户请求处理流程

请求流程图.jpg

灵活的用户筛选策略,用户请求无感知。

灰度发布的核心目的

  • 效果可量化
  • 避免全量上线之后效果不佳造成的损失

开放平台的实现

开放平台的灰度发布实现是在接口层面的,可以是单个接口,也可以是整个业务服务(一批接口)。

特点:

  • 配置中心一键开/关灰度功能
  • 动态设置分流策略,及时生效,不需要重启服务
  • 支持按参数分流、按百分比分流、两种同时使用
  • 参数对可以配置多个,关系为“与”;参数值可以设置多个,以逗号分隔,关系为“或”,可以设置模糊匹配,以“”表示,“”只能放在开头或者结尾
  • 适用于灰度发布、AB测试、和负载均衡
  • 支持以服务分组级别的灰度(利用分流策略筛选用户)
  • 准实时接口调用报表展示

大致的结构图

arc1.jpg

这个图只是抽取灰度相关的一些点;

网关时序图

分流时序图.jpg

分流流程图

分流流程图.jpg

百分比和参数对是逻辑判断的核心;百分比计算需要记录正常环境和灰度环境的处理量,计数功能类主要使用了LongAdder类,提高大并发下的效率。

灰度策略管理

grays.png

API灰度策略设定

apiGrays.png

统计分析报表

tongji.png

其他

  • 如何精确的筛选用户?

公共请求参数有appKey、IP、clientId(设备ID号),
业务请求参数由接口自定义控制,可根据实际的业务需求,配合使用接口所有参数,来达到用户筛选。

目录
相关文章
|
测试技术 微服务 负载均衡
微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。 目前有很多用于部署的技术,有的简单,有的复杂;有的得停机,有的不需要停机即可完成部署。
2888 0
|
4月前
|
Kubernetes 监控 测试技术
在K8S中,如何实现金丝雀发布(灰度发布)?蓝绿发布?
在K8S中,如何实现金丝雀发布(灰度发布)?蓝绿发布?
|
7月前
|
监控 负载均衡 网络协议
企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
130 0
|
Kubernetes JavaScript Java
DHorse v1.4.2 发布,基于 k8s 的发布平台
## 版本说明 ### 优化特性 * 在集群列表增加集群版本; * 修改Jvm的GC指标名; ### 解决问题 * 解决shell脚本换行符的问题; * 解决部署历史列表页,环境名展示错误的问题; * 解决指标收集功能的异常;
|
Java 中间件 测试技术
全链路灰度新功能:MSE上线配置标签推送
微服务场景下,全链路灰度作为一种低成本的新功能验证方式,得到了越来越广泛的应用。除了微服务实例和流量的灰度,微服务应用中的配置项也应该具备相应的灰度能力,以应对灰度应用对特殊配置的诉求。
全链路灰度新功能:MSE上线配置标签推送
|
Java 数据处理 微服务
PolarisMesh系列文章——灰度发布系列(蓝绿发布)
蓝绿部署是一种应用发布模式,可将用户流量从先前版本的应用或微服务全量转移到新版本中(两者均保持在生产环境中运行)。
752 0
PolarisMesh系列文章——灰度发布系列(蓝绿发布)
|
Cloud Native Java 中间件
全链路灰度新功能:MSE 上线配置标签推送
本文介绍了全链路灰度场景给配置管理带来的问题,介绍了 MSE 针对这一场景的解决方案,并通过实践的方式展示了配置标签推送的使用流程。后续,MSE 还会针对配置治理做更多的探索,帮助用户更好地解决微服务配置管理中的难题,提高微服务应用的稳定性。
全链路灰度新功能:MSE 上线配置标签推送
|
运维 负载均衡 网络协议
游戏灰度发布
快速可以说是互联网的最大特点了,唯快不破,快速响应,快速发布,快速部署,快速上线 但上线,毕竟还是有风险的,怎么能又快速响应,又能降低风险范围呢 前人,现人,后人们都在寻找着银弹 部署方式就进化了有很多次,蓝绿部署、滚动部署、灰度发布、金丝雀发布。。。 这些都是为了应对互联网的快速响应需求 游戏的发布现在还是比较粗暴的,对开发,运维也比较简单。 制定一个版本计划,开发,与运营沟通,确定版本内容,到了时间,所有游戏区全部关闭入口,停止服务器,发布,部署,重启,开放入口,一气呵成,快哉! 等等,理想很丰满,现实很骨感 在版本发布最后一天,开发人员在凌晨1、 2点时,还在开发,修复bug,好不容易打
248 0
游戏灰度发布
|
负载均衡 Kubernetes 中间件
你居然只知道蓝绿发布?今天教你全链路灰度~
在我上家公司其实只有小型的灰度发布,可能会有人跳起来喊:那你们怎么发布服务的? 通过k8s的**滚动发布**来实现无缝上线,如果上线失败呢,通过旧release分支构回去。这其实是灰度里头的**流量比**负载。
1198 0
你居然只知道蓝绿发布?今天教你全链路灰度~