开放平台灰度发布分享

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

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

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号),
业务请求参数由接口自定义控制,可根据实际的业务需求,配合使用接口所有参数,来达到用户筛选。

目录
相关文章
|
消息中间件 缓存 NoSQL
Redis经典问题:缓存雪崩
本文介绍了Redis缓存雪崩问题及其解决方案。缓存雪崩是指大量缓存同一时间失效,导致请求涌入数据库,可能造成系统崩溃。解决方法包括:1) 使用Redis主从复制和哨兵机制提高高可用性;2) 结合本地ehcache缓存和Hystrix限流降级策略;3) 设置随机过期时间避免同一时刻大量缓存失效;4) 使用缓存标记策略,在标记失效时更新数据缓存;5) 实施多级缓存策略,如一级缓存失效时由二级缓存更新;6) 通过第三方插件如RocketMQ自动更新缓存。这些策略有助于保障系统的稳定运行。
1095 1
|
8月前
|
关系型数据库 MySQL 数据库连接
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
1355 82
|
安全 API
通义千问API获取方法
访问阿里云DashScope官网以获取API-KEY。首先需开通DashScope服务:登录控制台,点击“去开通”,阅读协议后点击“立即开通”。接着获取API-KEY:进入API-KEY管理页面,点击“创建新的API-KEY”,复制并安全保存生成的API-KEY。完成这些步骤后,即可使用API-KEY调用DashScope API。更多详情见[官方文档](https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key)。
|
11月前
|
数据采集 人工智能 移动开发
盘点人工智能在医疗诊断领域的应用
人工智能在医疗诊断领域的应用广泛,包括医学影像诊断、疾病预测与风险评估、病理诊断、药物研发、医疗机器人、远程医疗诊断和智能辅助诊断系统等。这些应用提高了诊断的准确性和效率,改善了患者的治疗效果和生活质量。然而,数据质量和安全性、AI系统的透明度等问题仍需关注和解决。
1330 10
|
网络协议 网络架构
Ch4.网络层(三)
网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。
2615 0
|
人工智能 Linux Docker
一文详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
近年来,大模型在AI领域崭露头角,成为技术创新的重要驱动力。从AlphaGo的胜利到GPT系列的推出,大模型展现出了强大的语言生成、理解和多任务处理能力,预示着智能化转型的新阶段。然而,要将大模型的潜力转化为实际生产力,需要克服理论到实践的鸿沟,实现从实验室到现实世界的落地应用。阿里云去年在云栖大会上发布了一系列基于通义大模型的创新应用,标志着大模型技术开始走向大规模商业化和产业化。这些应用展示了大模型在交通、电力、金融、政务、教育等多个行业的广阔应用前景,并揭示了构建具有行业特色的“行业大模型”这一趋势,大模型知识库概念随之诞生。
156218 30
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
904 9
|
JSON Java API
哇塞!Spring Boot 中的 @DateTimeFormat 和 @JsonFormat,竟能引发数据时间大变革!
【8月更文挑战第29天】在Spring Boot开发中,正确处理日期时间至关重要。
522 1
|
API
langchain 入门指南(二)- 如何跟大模型对话
langchain 入门指南(二)- 如何跟大模型对话
1201 0
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作