共计 2689 个字符,预计需要花费 7 分钟才能阅读完成。
简介:AHAS 性能开关是一个轻量级的动静配置框架,通过性能开关能够动静治理代码中的配置项,依据需要为某个利用开启或敞开局部性能,或设置某个性能指标的阈值。性能开关通常用于设置黑白名单、运行时动静调整日志级别、降级业务性能等场景。
作者:苏宇(流士)
咱们业务常见的配置问题
通常业务代码中蕴含许多的配置项,这些配置项用于管制各种各样的业务逻辑,例如一个 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,连接功能开关服务,无需对利用做任何革新,真正做到无侵入。
- 配置推送
通过 AHAS 控制台即可对利用的配置项进行治理,按需推送配置项,反对按节点推送与全局推送形式。
- 配置长久化
通过 ACM 组件长久化配置项,保障配置项高可靠性。利用在重启或扩容阶段可读取长久化配置。
具体内容见下表:
除此之外,AHAS 性能开关相较于其余竞品还具备如下差异化劣势:
- 强类型校验
用户无需在业务层面对接管到的配置进行类型及格局的校验,校验工作由平台承当,利用仅需关注业务。
- 无侵入式接入
对 SpringCloud 利用反对一键接入,自动识别利用中配置项,可通过控制台实时批改并进行长久化等操作。
- 简单配置项反对
在简单数据类型反对方面较为欠缺,无需恪守较为繁琐的配置项规定。
- 开箱即用性能
反对日志级别动静调整,获取不同级别日志,不便问题剖析、故障定位。
业务中开关配置常见的利用场景有哪些?
动静调整日志级别
在开发 Java 程序时,咱们常常会用到各种各样的日志框架。为了防止在程序失常运行时输入不必要的信息,能够针对性地动静调整日志级别,以便输入更多的日志信息排查线上问题,或是缩小日志打印带来的性能耗费。性能开关提供了在利用运行时动静批改日志级别的性能,在不同的利用场景下,您能够随时调整日志的级别,失去更无效的日志信息。(注:反对的日志框架:Log4j、Log4j2、Logback。)
配置项组合更新
在理论的业务运行场景下,可按不同场景批量更新组合配置项。所谓组合配置项指具备一组互相关联业务语义的配置项,如页面布告中工夫、题目、内容等,商品非凡优惠配置中价格、优惠折扣等。
下图以 ’ 商品优惠配置 ’ 为例进行阐明。’ 商品优惠配置 ’ 在不同场景下优惠对象、优惠折扣及价格等各不相同,将 ’ 商品优惠配置 ’ 波及的配置项组合,在不同场景下设置不同内容,可在不同场景下疾速切换,同时省去繁琐校验过程,防止出错。
开关驱动开发
以开关形式控制代码执行逻辑,用于新性能疾速验证,在呈现问题时可及时回退。相比简单的零碎公布,投入老本较低,可联合 DevOps 机制进行实际。
如下图所示,当执行逻辑触发时拜访对应的开关配置查看配置是否关上,从而决定是否执行新性能。可用于 A/B 测试、环境隔离等场景。
金丝雀(灰度)公布
确保利用公布的可观测,可灰度,可回滚,应用金丝雀公布进行小流量验证,验证通过后再全量降级,实时查看流量的分配情况。
怎么配置 AHAS 开关?
步骤一:环境筹备
- 性能开关 Agent 形式接入,与流量防护共用 Agent,
配置 -Dahas.switch.agent.plugin.group.enabled=true
- 利用配置 SDK 形式接入,参考应用 SDK 接入[1]
- 利用配置 Spring Boot Starter 形式接入,参考应用 Spring Boot Starter 接入[2]
步骤二:配置操作
以开箱即用性能日志动静批改为例。
进入指标利用的开关列表页面。在开关列表页面搜寻到 SYSTEM_LOG_CONFIG 开关,即日志级别开关。
推送值格局:Key 为 LoggerName,Value 为日志级别。如需批改全局日志级别,LoggerName 为 root,如下所示。
`
{
“root”: “ERROR”
}
`
步骤三:配置成果
批改后即可失效,具体成果如下。
相干链接
[1] 应用 SDK 接入
https://help.aliyun.com/docum…
[2] 应用 Spring Boot Starter 接入
https://help.aliyun.com/docum…
原文链接
本文为阿里云原创内容,未经容许不得转载。