运维稳定性中的开关和预案

简介: 【1月更文挑战第26天】

在运维稳定性保障中,限流降级的技术方案,是针对服务接口层面的,也就是服务限流和服务降级。而业务降级的维度就是开关和预案。


开关,这个概念更多是业务和功能层面的,主要是针对单个功能的启用和停止进行控制,或者将功能状态在不同版本之间进行切换。


在业务层面,就像经常提到的大促场景案例,会关闭掉很多非核心功能,只保留交易链路的核心功能。比如认为商品评论是非核心功能,这时就会通过开关推送这种方案将这个功能关闭。当用户访问商品详情页时,这个接口就不再被调用,从用户角度来说,就是在大促峰值时刻看不到所浏览商品的评论列表。


在功能层面,技术架构中会使用缓存技术,但是要考虑到缓存有可能也会出现故障,比如不可访问,或者数据错乱异常等状况,这时就会考虑旁路掉缓存,直接将请求转到数据库这一层。


这里有两种做法:一种做法是通过降级手段,也就是常说的熔断,自动化地旁路;另一种做法,比如在数据异常情况下,请求是正常的,但是数据是有问题的,这时就无法做到自动化旁路,就要通过主动推送开关的方式来实现。


预案,可以理解为让应用或业务进入到某种特定状态的复杂方案执行,这个方案最终会通过开关、限流和降级策略这些细粒度的技术来实现,是这些具体技术方案的场景化表现。


因为每个业务或应用都会有自己的开关配置,而且数量会有很多,如果在大促前一个个推送,效率就会跟不上,所以就会针对某个应用的具体场景,提供批量操作的手段,通过预案场景将同一应用,甚至多个应用的开关串联起来。


比如上面提到的商品详情页,不仅可以关闭商品评论,还可以关闭商品收藏提示、买家秀、店铺商品推荐、同类型商品推荐以及搭配推荐等等。有了场景化的预案,管理和维护起来就会更容易。


除了业务层面的预案,还可以将预案应用到应急场景下,比如缓存故障异常。在真实场景下,要考虑得更全面,比如缓存能够支撑的业务访问量是要远远大于数据库的,这时就要做功能降级,这就要考虑数据库是否能够支撑住这么大的请求量(通常情况下肯定是支撑不住的)。所以,遇到这种场景,首要考虑的是限流,先将业务流量限掉三分之一甚至是一半,然后再将功能降级到数据库上。


这样就又涉及到多种策略的串行执行。如果没有预案都是单个执行的话,效率肯定会低,而且还可能涉及到多个应用都会执行相同的业务降级策略,这时就必须要有预案来统一管理,提前梳理好哪些应用需要在这种场景下执行对应的开关、限流和降级策略。


技术方案上并不复杂,开关的字段主要以 Key-Value 方式管理,并从应用维度,通过应用名管理起来,这个对应关系就可以放到统一的控制台中管理。步骤如下:


1.开关管理

通过 Key-Value 方式保存,与代码中的具体 Field 字段对应起来。这里就又会涉及到Spring 的 AOP 和注解技术。

如下面代码所示,通过注解方式定义了一个开关 testKey,它与控制台中配置的 Key 相对应,并获取对应的 Value 取值,在业务运行阶段,我们就可以根据这个值,来决定业务执行逻辑,下面是简化的示例。

@AppSwitcher(key="key1",valueDes = "Boolean类型")
 private Boolean key1;
代码中直接调用AppName对应的开关配置,进行不同业务逻辑的实现:
Boolean key1 = MoguStableSwitch.isStableSwitchOn("key1");
if (key1)
{
//开关打开时业务逻辑实现
}else
{
//开关关闭时业务逻辑实现
}


2.开关推送

当在控制台上修改开关值后,会推送到微服务的配置中心做持久化,这样当应用下次重启时依然可以获取到变更后的值。还有另外一种方式,就是通过 HTTP 的方式推送,这种情况的应用场景是,当第一种情况失败时,为了让开关快速生效预留的第二个接口。


3.配置变更

应用中引入的开关 SDK 客户端会监听对应配置的变更,如果发生变化,就会马上重新获取,并在业务运行时生效。


4.预案执行

就是多个开关策略的串行执行,会重复上面这几个关键步骤。


相关文章
|
弹性计算 运维 监控
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(2)
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(2)
223 1
|
11月前
|
运维 监控 安全
高效运维管理:提升系统稳定性的策略与实践
【10月更文挑战第2天】 在当今数字化时代,运维管理成为企业IT部门的重要任务。本文将探讨如何通过高效的运维管理策略和最佳实践,提升系统的稳定性,确保业务持续平稳运行。通过分析常见问题、预防措施以及应对策略,我们将揭示高效运维的关键要素,助您打造一个可靠的IT环境。
|
消息中间件 弹性计算 运维
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(1)
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(1)
219 1
|
10月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:提升IT系统稳定性与效率的新引擎####
本文探讨了智能化运维(AIOps)在现代IT管理中的应用,重点分析了其如何通过集成人工智能、机器学习与大数据分析技术,显著提升IT系统的稳定性与运维效率。不同于传统运维的被动响应模式,智能化运维能够预测潜在故障,实现主动维护,从而减少停机时间,优化资源配置。文章还概述了实施智能化运维的关键步骤与面临的挑战,为读者提供了一个全面了解智能化运维价值的窗口。 ####
|
11月前
|
运维 监控 安全
高效运维管理:提升系统稳定性的策略与实践
【10月更文挑战第13天】 本文探讨了高效运维管理的关键策略和实践,旨在帮助运维团队提升系统的稳定性。通过分析常见问题,提出具体的解决方案,包括监控与告警、自动化工具的应用、故障排查与恢复、性能优化以及安全防护等方面。通过这些策略和实践,可以帮助企业构建一个稳定、可靠且高效的IT系统。
366 1
|
11月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
11月前
|
运维 监控 大数据
高效运维管理:提升系统稳定性的策略与实践
在当今信息技术飞速发展的时代,运维管理作为保障系统稳定运行的关键环节,其重要性不言而喻。本文将深入探讨如何通过优化运维流程、引入自动化工具和建立完善的监控体系等策略,来有效提升系统的稳定性。同时,结合具体实践案例,分析这些策略在实际工作中的应用效果,为运维人员提供有益的参考和启示。
481 6
|
运维 监控 持续交付
运维自动化:提升效率与稳定性的关键策略
【8月更文挑战第16天】在当今快速发展的技术环境中,运维自动化已成为企业追求高效运营和系统稳定性的重要工具。本文将探讨自动化如何转变传统运维模式,通过减少人为错误、加快故障恢复时间和提高资源利用率来优化运维工作。文章还将讨论自动化技术的最新趋势,以及企业在实施自动化时需要考虑的策略和挑战。
|
12月前
|
运维 监控 安全
高效运维管理:提升企业IT系统稳定性与性能
在当今信息化时代,高效的运维管理对于企业IT系统的稳定性和性能至关重要。本文将探讨如何通过优化运维流程、引入自动化工具和建立完善的监控体系等措施,实现高效运维管理,从而提升企业的核心竞争力。
|
11月前
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
198 0