乐趣区

关于运维:运维服务降级新玩法

运维开关 (Ops Toggles) 是个性治理(Feature Management)的外围利用场景之一。这类开关通常从运维的角度管控零碎性能,比方当咱们上线的新性能呈现问题或某个依赖服务呈现故障时,运维或研发人员能够禁用性能或服务降级,来缩小故障对系统整体的影响。本文将介绍如何应用 FeatureProbe 实现手动降级开关和主动降级开关。

一、什么是降级开关?

服务降级作为服务容错的罕用形式之一,其思维是就义零碎中非核心性能或服务来保证系统整体可用性。罕用的服务降级形式有 熔断降级 限流降级 以及 开关降级,这些不同的降级形式别离应答不同的故障场景。

对于熔断降级和限流降级形式不开展介绍,这里的开关降级指的是在代码中事后埋设一些开关,并实时获取开关的状态来管制服务的行为。比方,开关开启的时候拜访上游服务获取实时数据,当依赖的上游服务呈现故障时,立刻敞开开关来拜访旧的缓存数据或默认值;再比方,在电商大促期间为了保障外围服务用到的计算资源,通过开关来敞开非核心服务。

上面是利用开关执行降级逻辑的代码示例:

// 获取降级开关返回值
degradeRpcService := fpClient.BoolValue("degrade_rpc_service", false)
if degradeRpcService {// 执行降级逻辑, 如从缓存中获取旧数据} else {// 调用失常逻辑,如从近程服务获取实时数据}

其中  degrade_rpc_service 就是一个典型的降级开关。

二、如何实现手动降级开关?

实现降级开关通常会思考应用配置核心、Redis 或数据库等来存储开关值,并用对应的 client 端获取开关后果。但这些通用工具的应用界面对开关场景的用户来说并不非常敌对。FeatureProbe 作为专门的开关治理服务,不仅提供了 client 实时获取开关状态的性能,同时还能让你在对立的平台上可视化治理开关和管制开关状态,让开关管制更加高效、平安。

降级开关通常是一个 boolean 类型的开关,对应的返回(分组)值也只有两种状况,如下图所示:

应用程序可通过接入 FeatureProbe SDK 来获取该降级开关返回值,以 Java 代码为例:

final FeatureProbe fpClient = new FeatureProbe(FEATURE_PROBE_SERVER_SDK_KEY, config);
boolean isDegrade = fpClient.boolValue("degrade_rpc_service", new User(), false);
if (isDegrade) {
  // 降级解决逻辑
  return;
}

当 RPC 调用的服务呈现故障时,只须要批改 默认规定 中的返回值为“降级”并公布,即可实现疾速人工降级操作。

三、如何实现主动降级开关?

为了尽可能进步降级效率,某些开关降级场景不心愿须要人工干预降级。比方咱们心愿在 11 月 10 号 23:59 时对某些服务执行降级以应答第二天的大促流动;当咱们监控零碎发现上游服务触发 P0 报警时,心愿立刻执行降级等等。这些主动降级场景都能够十分不便地应用 FeatureProbe 实现。

1、基于规定的主动降级

FeatureProbe 提供了灵便规定配置,让你实现主动降级。例如双十一大促开始时,须要敞开退款服务,以满足大部分消费者在平台上取得稳固的交易体验。如下图所示,提前配置好降级规定后,将在 11.10 23:59:59 时主动执行对服务降级而不须要人工干预。

对于上述降级规定在接入 SDK 的代码也毋庸非凡解决,FeatureProbe SDK 将主动依据服务器工夫来决定是否降级。

2、基于内部触发的主动降级

另外一种主动降级场景是由内部零碎触发,如监控零碎。该场景下能够应用 FeatureProbe OpenAPI 来主动变更开关状态。如下脚本所示,通过 OpenAPI 批改开关默认返回值实现主动降级操作:

curl 'https://featureprobe.io/api/projects/{PROJECT KEY}/environments/{ENV KEY}/toggles/{TOGGKE KEY}/targeting' \  
  -X 'PATCH' \  
   -H 'Authorization: {YOU API KEY}' -H 'Content-Type: application/json' --data-raw '{"comment":" 执行降级 ","content":{"defaultServe":{"select": 0},  
        "variations":[  
            {  
                "value":"true",  
                "name":"降级",  
            },  
            {  
                "value":"false",  
                "name":"不降级",  
            }  
        ]  
    }  
}'

更多对于 OpenAPI 应用介绍能够查看文档。

四、总结

本文次要介绍了什么是降级开关,同时别离演示了手动和自动开关降级应用形式,以及如何通过 FeatureProbe 的规定配置实现主动降级以及如何由内部触发 FeatureProbe 的 OpenAPI 来实现主动降级。对于更多开关降级的应用场景欢送来和咱们一起独特探讨和分享。

目前 FeatureProbe 应用 Apache 2.0 License 协定曾经齐全开源。你能够从 GitHub 或 Gitee 上获取到所有代码。

与此同时,咱们提供了无需部署的在线试用环境和一个仅需 5 分钟即可体验的示例我的项目

如果你对性能(个性)治理感兴趣,欢送退出到咱们的开源我的项目中来,独特推动软件开发行业的效力。

退出移动版