AHAS-功能开关 解决方案

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

背景介绍

微服务架构之应用配置

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

问题项

问题描述

本地静态配置

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

配置格式不统一

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

生产事故

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

配置修改困难

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

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

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

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

典型使用场景


动态调整日志级别

此为开箱即用功能。

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

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

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

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

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

{

"root": "ERROR"

}

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


配置项组合更新

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

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

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

开关驱动开发

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

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

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



金丝雀(灰度)发布

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




应用配置解决方案介绍

用户在无需改变MSE使用习惯前提下,通过新应用接入或版本升级方式即可使用应用配置能力。

MSE后端与应用配置服务(ahas-switch)整合而复用应用配置相关功能,解耦应用配置具体实现。控制台推送配置项由应用配置服务处理,配置项通过ACM组件持久化,应用重启或扩容阶段可读取持久化配置。

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

现有产品对比分析

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

1.开源组件:

2.商业化产品:

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

产品

Switch 社区版

Togglz

AWS AppConfig

Apollo

AHAS 功能开关

(MSE 应用配置)

配置时效性

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

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

动态配置,实时生效

动态配置,实时生效

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

配置覆盖能力

仅支持单机推送

需自行实现持久化

多节点覆盖

多节点覆盖

快速覆盖上千服务实例

配置灰度能力

不支持

支持

支持

支持

支持

简单配置(文本、开关)

支持

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

支持

支持

支持

复杂类型的业务配置

支持

不支持

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

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

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

配置格式校验

支持

不支持

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

不支持

自动校验,保证类型安全

可观测能力

无控制台,不支持

支持弱

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

支持

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

微服务生态支持

无直接支持

无开箱即用支持

无直接支持

支持SpringCloud微服务家族配置项

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

开箱即用的运维管控能力

不支持

不支持

不支持

支持

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

代码侵入性

有侵入

有侵入

有侵入

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

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

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


核心设计要点

  • 应用接入

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

  • 配置推送

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

  • 配置持久化

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


差异化优势

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

  • 强类型校验

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

  • 无侵入式接入

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

  • 复杂配置项支持

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

  • 开箱即用功能

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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
目录
相关文章
|
Java 应用服务中间件 开发工具
AHAS-功能开关 最佳实践
功能开关是一个轻量级的动态配置框架,通过功能开关可以动态管理代码中的配置项,根据需求为某个应用开启或关闭部分功能,或设置某个性能指标的阈值。功能开关通常用于设置黑白名单、运行时动态调整日志级别、降级业务功能等场景。本文介绍最佳实践
242 0
|
SQL 应用服务中间件 AHAS
阿里云应用高可用服务 AHAS 流控降级实现 SQL 自动防护功能
在影响系统稳定性的各种因素中,慢 SQL 是相对比较致命的,可能会导致 CPU、LOAD 异常、系统资源耗尽。线上生产环境出现慢 SQL 往往有很多原因: 硬件问题。如网络速度慢,内存不足,I/O 吞吐量小,磁盘空间满等。
3777 1
|
2天前
|
Java Serverless 应用服务中间件
Serverless 应用引擎产品使用之在Serverless 应用引擎中跳过AHAS创建如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
107 3
|
SQL 运维 监控
应用高可用 AHAS 产品销售指南| 学习笔记
应用高可用 AHAS 产品销售指南
117 0
应用高可用 AHAS 产品销售指南| 学习笔记
|
测试技术 应用服务中间件 AHAS
冬季实战营第四期:基于PTS&AHAS完成线上应用最佳状态的实践,直播学习笔记
冬季实战营第四期:基于PTS&AHAS完成线上应用最佳状态的实践
115 0
冬季实战营第四期:基于PTS&AHAS完成线上应用最佳状态的实践,直播学习笔记
|
消息中间件 监控 Cloud Native
阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
|
容器
纳管集群接入Ahas-应用限流
在容器服务的应用目录里找到“ack-ahas-sentinel-pilot” 填入region_id这一个参数,“创建”即可 如果集群和vpc之间有专线,region_id按专线连接的region填写,如果没有,region_id请填入“cn-public” 创建完成后,可以用下面这个例子验证.
1408 0
纳管集群接入Ahas-应用限流
|
应用服务中间件 AHAS 监控
阿里云应用高可用 AHAS 正式商用,可一键提升云上应用可用性
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战。 7月17日,阿里云应用高可用服务AHAS 正式商用,包含架构感知、流控降级和故障演练三大独立的功能模块,可快速提高应用的高可用能力,解决分布式架构下的高可用难题。
3211 1
|
关系型数据库 应用服务中间件 数据库
【阿里云新品发布·周刊】第18期:应用高可用服务 AHAS 商业化首发,一步提升应用可用性
点击订阅新品发布会! 新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 应用高可用服务 AHAS 商业化首发 2019年7月17日15时,应用高可用服务 AHAS 商业化首发。
2138 0
应用高可用 AHAS 一键提升云上的业务可用性
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战。 近日,阿里云高可用服务 AHAS 正式商用,提供限流降级、架构可视化、故障注入,可一键提升应用可用性,我们邀请了阿里巴巴高可用架构团队高级开发工程师云寅分享: 云上业务的可用性有5个9的要求,该如何提高? 如何评估分布式系统的容错性、系统容灾红线和云资源扩展能力? 系统架构复杂度越来越高,架构变化日益频繁,如何识别架构中存在的问题? 直播报名地址:点击这里。
12091 1