俞敏洪|如何帮助业务丝滑配置?阿里巴巴用了 11 年的“功能开关”是什么?

俞敏洪|如何帮助业务丝滑配置?阿里巴巴用了 11 年的“功能开关”是什么?

文章图片

俞敏洪|如何帮助业务丝滑配置?阿里巴巴用了 11 年的“功能开关”是什么?

文章图片

俞敏洪|如何帮助业务丝滑配置?阿里巴巴用了 11 年的“功能开关”是什么?

文章图片

俞敏洪|如何帮助业务丝滑配置?阿里巴巴用了 11 年的“功能开关”是什么?

文章图片


我们业务常见的配置问题 通常业务代码中包含许多的配置项 , 这些配置项用于控制各种各样的业务逻辑 , 例如一个 bool 类型的变量控制某个功能是否开启 , 一个 list 控制访问白名单或黑名单 , 一个 String 控制提示信息 。 但是在常规的微服务架构应用的配置过程中 , 会碰到以下的配置问题与挑战 。

针对上述问题 , 开发者通常希望可以动态、实时地去查看和修改配置项 , 并且期望不需要编写额外的代码来管理 , 此时就可以利用 AHAS 功能开关来实时修改和查看对应的配置项 。 与传统的配置中心不同 , 开发者使用 AHAS 功能开关时 , 无需关注配置项的解析逻辑 , 只需声明对应的变量 , 加上 AHAS 功能开关的注解即可在功能开关控制台对配置进行动态管理 。
什么是 AHAS 功能开关? AHAS 功能开关是一个轻量级的动态配置框架 , 通过功能开关可以动态管理代码中的配置项 , 根据需求为某个应用开启或关闭部分功能 , 或设置某个性能指标的阈值 。 功能开关通常用于设置黑白名单、运行时动态调整日志级别、降级业务功能等场景 。
利用 AHAS 功能开关 , 可以帮助企业构建完善的线上运维手段 , 作为流量防护等常规运维手段的有力补充 , 功能开关可针对特定业务场景实现定向止损 , 及时保障应用系统稳定性;对不同业务场景下的配置项具体内容可灵活变更 , 随时调整;AHAS 功能开关可将原生 Spring 配置项自动转化为功能开关项 , 真正做到零改造 。
AHAS 功能开关实现逻辑
通过 AHAS 控制台管理和推送配置项 , 应用重启或扩容阶段可读取持久化配置 。

市场中现有的配置管理服务在某些配置管理核心环节存在严重不足 , 具体现象可简述如下:
灵活性差 现有配置管理服务多基于文件方式或需手动设置配置项方能生效 , 过程较为复杂 , 且容易出错;AHAS 功能开关可自动支持原生 Spring 配置项 , 极大解放业务人员生产力 。
配置类型缺少校验 现有配置管理服务在推送阶段大多未实现类型校验 , 可能导致严重线上故障 , 引发资损;AHAS 功能开关对配置类型进行强校验 , 把问题暴露在控制台层面 , 避免由于人员操作失误引发的问题 。
持久化数据丢失 现有配置管理服务多基于本地文件或数据库进行持久化 , SLO 难以保障;AHAS 功能开关依托于集团持久化产品保障开关持久化的可靠性 。
侵入性强 现有配置管理服务对代码侵入性较强 , 引入使用需做大量改造 , 耗费较多精力;AHAS 功能开关提供 Agent 接入方式 , 对应用完全无侵入 , 对某些需自定义开关场景可按需引入 SDK 。
和业界常见产品的差别是什么?
对 switch 社区版及国内外使用较为广泛的开关配置产品 , 从配置在微服务运维的各个阶段及维度展开进行比较 。 AHAS 在应用接入的成本、配置推送的可操作性以及配置持久化方面都有较大的优势:
应用接入 应用通过 Agent 方式接入 AHAS , 连接功能开关服务 , 无需对应用做任何改造 , 真正做到无侵入 。