AHAS-功能开关 解决方案

简介: 功能开关是一个轻量级的动态配置框架,通过功能开关可以动态管理代码中的配置项,根据需求为某个应用开启或关闭部分功能,或设置某个性能指标的阈值。功能开关通常用于设置黑白名单、运行时动态调整日志级别、降级业务功能等场景。

背景介绍

微服务架构之应用配置

应用配置可解决的问题主要包括以下方面:

问题项

问题描述

本地静态配置

采用本地静态配置,导致运行时无法动态修改

配置格式不统一

散乱,难以管理,有的用XML格式,有的用properties,有的用DB等

生产事故

容易将非生产配置带到生产环境,引发事故

配置修改困难

部署多台节点时,修改配置费时费力,周期长

缺少安全审计和版本控制能力

无法追溯责任人,无法得知修改内容,无法确定修改时间,无法及时回滚

针对上述问题,阿里云产品应用配置中心应运而生,下面介绍微服务应用配置典型使用场景。

典型使用场景


动态调整日志级别

此为开箱即用功能。

在特定的场景下,您可以针对性地动态调整日志级别,以便输出更多的日志信息排查线上问题,或是减少日志打印带来的性能消耗。功能开关提供了在应用运行时动态修改日志级别的功能,在不同的应用场景下,您可以随时调整日志的级别,得到更有效的日志信息。

在开发Java程序时,我们经常会用到各种各样的日志框架。为了避免在程序正常运行时输出不必要的信息,我们在使用日志框架时会设置默认的日志级别。而程序在线上运行时,我们需要在特定的场景下针对性地动态调整日志级别。

进入目标应用的开关列表页面。在开关列表页面搜索到 SYSTEM_LOG_CONFIG 开关,即日志级别开关。

单击操作列的全局推送单机推送,按照<loggerName,loggerLevel>格式填写日志运行的配置,然后单击全局推送单机推送。即可修改全部机器或是单台机器的日志运行级别。

推送值格式:KeyLoggerNameValue 为日志级别。如需修改全局日志级别,LoggerNameroot,如下所示。

{

"root": "ERROR"

}

注:支持的日志框架:Log4j、Log4j2、Logback。


配置项组合更新

可按不同场景批量更新组合配置项,所谓组合配置项指具有一组相互关联业务语义的配置项,如页面公告中时间、标题、内容等,商品特殊优惠配置中价格、优惠折扣等。

下图以'商品优惠配置'为例进行说明。

'商品优惠配置'在不同场景下优惠对象、优惠折扣及价格等各不相同,将'商品优惠配置'涉及的配置项组合,在不同场景下设置不同内容,可在不同场景下快速切换,同时省去繁琐校验过程,避免出错。

开关驱动开发

以开关方式控制代码执行逻辑,用于新功能快速验证,在出现问题时可及时回退。相比复杂的系统发布,投入成本较低,可结合DevOps机制进行实践。

如下图所示,当执行逻辑触发时访问对应的开关配置查看配置是否打开,从而决定是否执行新功能。

可用于A/B测试、环境隔离等场景。



金丝雀(灰度)发布

通过配置项控制应用接收流量,在灰度验证后,可及时回退或全线切流。



功能开关解决方案介绍

控制台推送配置项由功能开关服务处理,配置项通过ACM组件持久化,应用重启或扩容阶段可读取持久化配置。

下文首先通过对比现有产品,分析竞品优势与劣势,进而引出本应用配置解决方案核心设计要点,突出差异化优势,为用户提供优秀的应用配置解决方案。

现有产品对比分析

选取较为有代表性且具有一定市场规模的产品进行对比,分析产品的适用场景,为用户产品选型及AHAS功能开关应用配置推广提供依据。

1.开源组件:

2.商业化产品:

产品对比分析如下表所示:

产品

Switch 社区版

Togglz

AWS AppConfig

Apollo

AHAS 功能开关

配置时效性

动态配置,需自行实现可靠推送

动态配置,需自行实现可靠推送

动态配置,实时生效

动态配置,实时生效

动态配置,开箱即用,可靠推送,实时生效

配置覆盖能力

仅支持单机推送

需自行实现持久化

多节点覆盖

多节点覆盖

快速覆盖上千服务实例

配置灰度能力

不支持

支持

支持

支持

支持

简单配置(文本、开关)

支持

场景有限,仅可以当做 bool 类型的开关

支持

支持

支持

复杂类型的业务配置

支持

不支持

均需通过文本方式配置,代码自行解析需要的类型

支持,但不完善,如List类型要使用逗号分隔且需调整注解

typed-config,支持各种基本类型和复杂类型(List, Map, Set, 自定义对象),自动解析并保障类型安全

配置格式校验

支持

不支持

需用户手写规则校验,使用成本高

不支持

自动校验,保证类型安全

可观测能力

无控制台,不支持

支持弱

弱,业务生效的实时值无法直接观测

支持

白屏化观测能力,控制台可观测各接入节点的实时生效值和分布情况

微服务生态支持

无直接支持

无开箱即用支持

无直接支持

支持SpringCloud微服务家族配置项

开箱即用的 Spring Cloud @Value 及@ConfigurationProperties 配置动态管理能力

开箱即用的运维管控能力

不支持

不支持

不支持

支持

支持,如动态日志级别调整

代码侵入性

有侵入

有侵入

有侵入

SDK 方式低侵入;Java Agent 方式无侵入,但功能存在问题

Java Agent 方式无侵入,SDK 方式低侵入

综合比较可得出结论:在应用配置领域,AHAS提供的应用配置支持的场景及功能完备性方面,相对而言,对用户使用更加友好。


核心设计要点

  • 应用接入

应用通过Agent方式接入AHAS,连接应用配置服务,无需对应用做任何改造,真正做到无侵入。

  • 配置推送

在AHAS控制台即可对应用配置进行管理,按需推送配置项,支持按节点推送与全局推送方式。

  • 配置持久化

应用配置服务通过ACM组件持久化配置项,保障配置项高可靠性。应用在重启或扩容阶段可读取持久化配置。


差异化优势

在产品对比分析基础上,对AHAS功能开关具备的差异化能力简要概括为以下三点:

  • 强类型校验

用户无需在业务层面对接收到的配置进行类型及格式的校验,校验工作由平台承担,应用仅需关注业务

  • 无侵入式接入

对SpringCloud应用支持一键接入,自动识别应用中配置项,可通过控制台实时修改并进行持久化等操作

  • 复杂配置项支持

在复杂数据类型支持方面较为完善,无需遵守较为繁琐的配置项规则

  • 开箱即用功能

支持日志级别动态调整,获取不同级别日志,方便问题分析、故障定位

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
目录
相关文章
|
Java 应用服务中间件 开发工具
AHAS-功能开关 最佳实践
功能开关是一个轻量级的动态配置框架,通过功能开关可以动态管理代码中的配置项,根据需求为某个应用开启或关闭部分功能,或设置某个性能指标的阈值。功能开关通常用于设置黑白名单、运行时动态调整日志级别、降级业务功能等场景。本文介绍最佳实践
242 0
|
SQL 运维 监控
应用高可用 AHAS 产品销售指南| 学习笔记
应用高可用 AHAS 产品销售指南
119 0
应用高可用 AHAS 产品销售指南| 学习笔记
|
安全 应用服务中间件 AHAS
《筑牢高可用基石,AHAS 赋能溪鸟安全生产探索与实践》电子版地址
筑牢高可用基石,AHAS 赋能溪鸟安全生产探索与实践.ppt
57 0
《筑牢高可用基石,AHAS 赋能溪鸟安全生产探索与实践》电子版地址
|
运维 安全 容灾
筑牢高可用基石,AHAS赋能溪鸟安全生产探索与实践
本篇内容分享了筑牢高可用基石,AHAS赋能溪鸟安全生产探索与实践。
170 0
筑牢高可用基石,AHAS赋能溪鸟安全生产探索与实践
|
消息中间件 监控 Cloud Native
阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
|
SQL 应用服务中间件 AHAS
阿里云应用高可用服务 AHAS 流控降级实现 SQL 自动防护功能
在影响系统稳定性的各种因素中,慢 SQL 是相对比较致命的,可能会导致 CPU、LOAD 异常、系统资源耗尽。线上生产环境出现慢 SQL 往往有很多原因: 硬件问题。如网络速度慢,内存不足,I/O 吞吐量小,磁盘空间满等。
3791 0
|
应用服务中间件 AHAS 监控
阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战。 7月17日,阿里云应用高可用服务AHAS 正式商用,包含架构感知、流控降级和故障演练三大独立的功能模块,可快速提高应用的高可用能力,解决分布式架构下的高可用难题。
3226 0
|
关系型数据库 应用服务中间件 数据库
【阿里云新品发布·周刊】第18期:应用高可用服务 AHAS 商业化首发,一步提升应用可用性
点击订阅新品发布会! 新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 应用高可用服务 AHAS 商业化首发 2019年7月17日15时,应用高可用服务 AHAS 商业化首发。
2153 0
应用高可用 AHAS 一键提升云上的业务可用性
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战。 近日,阿里云高可用服务 AHAS 正式商用,提供限流降级、架构可视化、故障注入,可一键提升应用可用性,我们邀请了阿里巴巴高可用架构团队高级开发工程师云寅分享: 云上业务的可用性有5个9的要求,该如何提高? 如何评估分布式系统的容错性、系统容灾红线和云资源扩展能力? 系统架构复杂度越来越高,架构变化日益频繁,如何识别架构中存在的问题? 直播报名地址:点击这里。
12112 1
|
数据可视化 应用服务中间件 AHAS
免费的容器架构可视化工具 | 阿里云应用高可用服务 AHAS 发布重大新特性
采用容器服务后,了解容器之间的关系及依赖是一个比较有挑战的问题。容器化改造后的实际架构模型可能与预想的架构存在较大的差异,架构师或系统运维人员需要精确地了解资源实例的构成和交互情况,存在一定的困难。其次,系统架构在动态演化过程中可能引入了一些不可靠的因素,比如弱依赖变强依赖、局部容量不足、系统耦合过重等,给系统的稳定性带了极大的安全隐患。
21644 0