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

简介: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 开关,即日志级别开关。

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

{"root": "ERROR"
}

步骤三:配置效果
修改后即可生效,具体效果如下。

相关链接

[1] 使用 SDK 接入

使用 SDK 接入 - 应用高可用服务 AHAS - 阿里云

[2] 使用 Spring Boot Starter 接入

使用 Spring Boot Starter 接入 - 应用高可用服务 AHAS - 阿里云

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台

简介:本文将介绍和梳理我们对云原生 AI 这个新领域的思考和定位,介绍云原生 AI 套件产品的核心场景、架构和主要能力。 作者:张凯 前言 云原生(Cloud Native)[1]是云计算领域过去 5 年发展最快、关注度最高的方向之一…

Node 之父斥责 Oracle:你们也不用,那请交出 JavaScript 商标!

整理 | 苏宓出品 | CSDN(ID:CSDNnews)也许 13 年前,Oracle 以 74 亿美元收购 Sun Microsystems 公司时,也不会想到自己后续要牵扯到诸多的版权诉讼与投诉的漩涡之中。众所周知,Oracle 在收购 Sun 之后&…

OPLG:新一代云原生可观测最佳实践

简介:OPLG 体系拥有成熟且富有活力的开源社区生态,同时也经过了大量企业生产环境的实践检验,是当下建设新一代云原生统一可观测平台的热门选择。但是,OPLG 只是提供了一个技术体系,如何灵活运用,解决实际问…

EventBridge 集成云服务实践

简介:本篇文章主要向大家分享了通过 EventBridge 如何集成云产品事件源,如何集成云产品事件目标以及通过事件流如何集成消息产品。 作者:李凯(凯易) EvenBridge 集成概述 EventBridge 是阿里云所推出了一款无服务器…

云原生微服务的下一站,微服务引擎 MSE 升级

简介:管好微服务,成为云原生时代的新难题。 管好微服务,成为云原生时代的新难题。 从建好微服务到管好微服务,差的虽是一个字,连接起两边的却需要大量的微服务落地经验。因为软件架构的核心挑战是解决业务快速增长带…

火爆全网的“数字人”,到底是个啥?

作者 | 小枣君来源 | 鲜枣课堂庄子他老人家说过:“人生,就是一场游戏。”对于这场游戏,有些人玩得很嗨,到了结尾不肯退场,总希望无限期玩下去。例如秦始皇,总想着灵丹妙药、长生不死。还有些人呢&#xff0…

阿里云RemoteShuffleService新功能:AQE和流控

简介:阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能、稳定性问题,并使得存算分离架构得以实施。为了更方便大家使用和扩展,RSS在2022年初开源,欢迎各路开发者共建。本文将…

OpenSergo 正式开源,多家厂商共建微服务治理规范和实现

简介 OpenSergo,Open 是开放的意思,Sergo 则是取了服务治理两个英文单词 Service Governance 的前部分字母 Ser 和 Go,合起来即是一个开放的服务治理项目。 该项目由阿里云、bilibili、字节跳动,以及 Spring Cloud Alibaba、Nacos…

Linux中常见的网络端口号

在使用计算机或智能手机时,我们使用各种硬件端口,如用于音频、HDMI、Type-c 等的 3.5mm 端口,其用于与硬件外围设备通信。同样,网络端口可以让我们在一台计算机上访问各种网络服务来达到通信的目的。因此,端口被认为是…

如何在云原生混部场景下利用资源配额高效分配集群资源?

简介:由于混部是一个复杂的技术及运维体系,包括 K8s 调度、OS 隔离、可观测性等等各种技术,之前的一篇文章《历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?》,主要聚焦在调度优…

稳定性与高可用保障的工作思路

简介:稳定性与高可用性是老生常谈的两个词。凭借经验和感受我们知道,提高系统的这两项指标,系统会更加健康,产品也会有更好的用户体验。但是如果要给稳定性和高可用性下一个定义该如何表述?稳定性和高可用性这二者又有…

腾讯云数据库自研内核全新升级 新架构比原先性能提升20%

9月16日,腾讯云数据库自研内核TXSQL完成了全新升级。搭载了新一代内核的云数据库在性能上较之前提升超过20%,延迟降低80%。目前,新一代内核TXSQL已应用于腾讯云数据库MySQL、分布式数据库TDSQL、云原生数据库TDSQL-C等多款主流云数据库产品中…

系统性能分析从入门到进阶

简介:本文以系统为中心, 结合日常工作和用例, 由浅入深地介绍了性能分析的一些方法和体会, 希望对想了解系统性能分析的同学有所帮助。 作者 | 勿非 本文以系统为中心, 结合日常工作和用例, 由浅入深地介绍了性能分析的一些方法和体会, 希望对想了解系统性能分析的…

宜搭小技巧|第一时间看到审批进度?消息通知来帮你

简介:「消息通知」自动发送,再也不用担心错过流程审批进度! 今天,宜小搭要申请出差,为了第一时间获取审批进度,他频繁刷新审批页面,这样既麻烦同时也浪费了大量时间,影响其他工作。…

一看即会:Serverless 应用开发的 7 个实战小技巧

简介:干货满满,马住收藏! Serverless 应用开发的 7 个经验心得 作者说:Serverless 架构下的应用开发,与传统架构的应用开发还是有比较大的区别点的,例如天然分布式架构会让很多框架丧失一定的"便利性…

如何使用 Serverless Devs 部署静态网站到函数计算

简介:手把手教你:如何使用 Serverless Devs 部署静态网站到函数计算。 前言 公司经常有一些网站需要发布上线,对比了几款不同的产品后,决定使用阿里云的函数计算(FC)来托管构建出来的静态网站。 FC 弹性实例自带的50…

一个好的科技公司logo长这样

简介:一个好的科技logo能体现出行业独有的专业性和技术优势,让你的公司科技感加满! 近年来,越来越多的初创公司崭露头角,其中科技互联网公司的比重非常高。小云也收到很多朋友的留言,询问科技类公司应该怎…

系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术

简介:本篇以 first contact (通信两端建立首个连接) 场景为例,介绍 SMC-R 通信流程。 文/龙蜥社区高性能网络SIG 一、引言 通过上一篇文章 《系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)》我们了解到&…

北京大学、阿里巴巴成立联合实验室,聚焦人工智能理论和创新算法研究

9月17日,在北京大学智能学科建设20周年大会上,北京大学和阿里巴巴共同宣布成立“北大-阿里妈妈人工智能创新联合实验室” (以下简称实验室)。实验室将聚焦人工智能前沿领域的理论、方法与关键技术展开研究,为社会和企业…

智能开放搜索上线定制分词器

简介:智能开放搜索上线定制召回模型-定制分词器功能,满足各行业、垂类、业务特殊,对搜索有较高分词要求的客户,提升语义理解能力,精准召回用户搜索意图。 NLP算法在搜索链路中的应用 这是一个完整的从查询词到搜索结…