什么是功能开关

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

背景信息

通常业务代码中包含许多的配置项,这些配置项用于控制各种各样的业务逻辑,例如一个bool类型的变量控制某个功能是否开启,一个list控制访问白名单或黑名单,一个String控制提示信息。开发者通常希望可以动态、实时地去查看和修改配置项,并且期望不需要编写额外的代码来管理,此时就可以利用AHAS功能开关来实时修改和查看对应的配置项。与传统的配置中心不同,开发者使用AHAS功能开关时,无需关注配置项的解析逻辑,只需声明对应的变量,加上AHAS功能开关的注解即可在功能开关控制台对配置进行动态管理。

主要功能

  • 查看功能开关:在AHAS控制台功能开关中,可以直观查看应用中包括哪些开关,具体操作步骤,请参见查看功能开关switch2
  • 查看开关值分布:在AHAS控制台功能开关中,可以直观地查看对应开关值信息和分布信息,具体操作步骤,请参见查看功能开关值分布
  • 设置开关推送:在AHAS控制台功能开关中,设置开关的推送值,推送成功后,业务代码里会实时生效。具体操作步骤,请参见设置开关推送
    说明 AHAS功能开关还支持灰度分批推送,您可以先在一批机器验证后再全局发布,防止预期外的变更导致线上故障。
例如在大促到来的时候,可以通过开关将非核心的业务逻辑降级,减少一些非必要的资源消耗。操作流程可参考以下示例:
  1. 在代码中增加核心业务开关、植入埋点和业务逻辑。
  2. AHAS控制台功能开关中查看业务开关的信息和值分布。
  3. AHAS控制台功能开关中将此开关的推送值设为true
  4. 在控制台上修改配置项,推送成功后,业务代码里会实时生效。代码中的此开关变量即变为true。即动态实时的通过功能开关控制业务逻辑。
开关推送步骤

常用场景

  • 运行时动态调整日志级别:在不同的应用场景下,您可能需要调整日志的级别,得到更有效的日志信息。功能开关提供了在应用运行时动态修改日志级别的功能。只要在应用中增加日志级别开关,然后在控制台中设置开关的推送值,即可快速的调整日志运行的级别,从而得到更有效的日志信息。具体操作步骤,请参见运行时动态调整日志级别
  • 主动降级业务功能:通常一个业务功能包含许多的业务逻辑,其中可以区分出一些核心业务和非核心业务。在高并发的情况下,例如618、双十一等场景,为了提升系统性能,系统需要减少非必要业务的资源消耗,对非必要的业务功能进行主动降级。只要在应用中定义降级业务开关,然后在控制台设置开关推送,即可快速实现业务的降级。具体操作步骤,请参见主动降级业务功能
  • 黑白名单功能:黑白名单是常用的访问控制规则,通过功能开关可以快速实现黑白名单功能。只要在应用中增加黑名单开关或白名单开关,然后在控制台设置开关推送即可。具体操作步骤,请参见快速实现黑白名单功能

注意事项

在有些IDE中,尤其是使用Spring Boot技术栈的时候,SwitchManager和用户自己的代码使用的是不同的ClassLoader加载的,会导致功能开关在云端修改后,在用户的工程中由于不同ClassLoader的问题取不到最新修改的值。

接入指引

使用SDK接入

使用SDK接入

适用于Java语言的任何框架,只需简单定义、初始化后即可接入功能开关。

使用Spring Boot Starter接入

使用Spring Boot Starter接入

Spring boot类应用专用接入方式,简化接入流程。