当前位置:网站首页>服务线上治理
服务线上治理
2022-06-30 12:37:00 【51CTO】
线上治理是根据量化分析的结果,通过相应的预案对线上服务的运行状况进行调整,保证线上服务正常运行,接下来讨论线上服务常见的预案,以及如何保证预案的自动触发和自动调整。
故障快速定位和止损的理想处理方式是将故障定位和预案执行打通,当出现故障时,能够判断出故障的大体类型以及对应的预案,并触发预案的自动执行。
当然实际的故障处理过程中有很多地方需要考虑,虽然并不是所有故障都能提前建立相应的预案,但我们可以根据历史故障和一些先验知识将故障进行归类,建立相应的预案。
另外,建立预案时应尽量方便执行和触发,如果不方便执行,很难短时间内处理故障,最关键的问题是判断预案触发的时机,以及当前是否应该执行预案。线上服务稳定性故障大体可以归类为如下原因。
- 变更引起的故障
变更是稳定性故障的最主要来源,系统广义的变更源很多,最常见的服务变更一般包含应用变更、配置变更和数据变更。除了服务变更之外,环境和硬件的变化,比如网络带宽变化、机房链路变化等,也可以归为广义的变更范畴。
- 流量和容量变化引起的故障
这类故障对应于之前稳定性保障中分析的输入流量突变,如果服务提前没有足够的应对机制,会导致一定的稳定性隐患。
- 依赖故障
依赖服务故障会影响调用依赖服务的上游服务,依赖服务故障又分为强依赖服务故障和弱依赖服务故障,这两者会有相应的处理方式。
- 机房、网络等硬件和环境故障
硬件和环境故障的特点是没有办法预测,随机性和偶然性因素很大,并且一旦发生往往是系统级别的问题,会产生很严重的后果。
- 其他
比如ID生成器溢出导致的故障。
故障的场景化是指根据上述稳定性故障的大类,再细化出一些方便识别判断的场景,比如入口流量突增、接入层故障、强依赖服务故障、弱依赖服务故障等细分的场景。划分这些场景的目的是发生故障时,进一步识别故障的根因(不一定是最根本原因,而是从止损的角度进行归类)。因此可以对那些比较容易通过可观测性指标判断出故障的场景类型,并且方便制定相应的场景化预案的故障,进行场景化归类。
对于降级、限流和冗余切流这几类比较明确的场景,可以基于Metric进行故障判断,并且和预案自动打通,以依赖服务故障为例,可以根据Metric成功率指标同环比变化,判断依赖服务是否有异常,如果通过Metric发现当前确实有异常,先查询变更管理平台,依赖服务当前是否有相关的变更操作。
如果有变更,建议依赖服务接口人立即进行变更回滚操作;如果没有变更操作,再判断当前对依赖服务的调用是强依赖还是弱依赖,如果是弱依赖,可以启动自动降级预案对依赖服务进行降级,如果是强依赖,降级肯定不能解决问题,可以通过预先制定好的冗余切换预案,启动服务级、集群级或者机房级别的流量切换。
基于Metric的场景和预案打通,目标是朝着故障定位自动化和智能化的方向演进,但需要根据实际情况逐步推进,对于一些不太容易判断的场景,建议谨慎操作,避免可能的误判,同时要定期对预案进行演练,保障预案触发的有效性。
边栏推荐
- PG基础篇--逻辑结构管理(表继承、分区表)
- Idea 2021.3 golang error: rning: undefined behavior version of delve is too old for go version 1.18
- Qt读写Excel--QXlsx工作表显示/隐藏状态设置4
- Solve numpy core._ exceptions. Ufunctypeerror: UFUNC 'Add' did not contain a loop with signature matching
- uniapp支付之APP微信支付unicloud版(附源码)
- 机器学习笔记 - 自相关和偏自相关简介
- Dark horse notes - common date API
- Common UI components
- Today's sleep quality record 80 points
- Unity脚本的基础语法(4)-访问其他游戏对象
猜你喜欢

电机控制park变换公式推导

【C语言深度解剖】float变量在内存中存储原理&&指针变量与“零值”比较

Visual studio configures QT and implements project packaging through NSIS

WTM major updates, multi tenancy and single sign on

rxjs Observable 两大类操作符简介

kaniko官方文档 - Build Images In Kubernetes

你想要的异常知识点都在这里了

Js根据相同值将数组转换为二维数组

顺应媒体融合趋势,中科闻歌携手美摄打造数智媒宣
![[Select] resource realization information, news, we media, blog applet (can be drained, open traffic master, with PC background management)](/img/e7/1c34d8aa364b944688ec2ffb4feb7c.jpg)
[Select] resource realization information, news, we media, blog applet (can be drained, open traffic master, with PC background management)
随机推荐
黑马笔记---集合(Collection的常用方法与遍历方式)
Development of unity script program
写信宝小程序开源
Problems and analysis in JMeter performance testing. How many problems have you encountered?
kaniko官方文档 - Build Images In Kubernetes
Sqlserver query code is 936 simplified Chinese GBK. Should I write 936 or GBK?
【 surprise】 la vitesse de téléchargement de Thunderbolt n'est pas aussi rapide que celle de la machine virtuelle
Substrate 源码追新导读: 修复BEEFY的gossip引擎内存泄漏问题, 智能合约删除队列优化
Flink SQL console, group not recognized_ Concat function?
Mqtt ROS simulates publishing a custom message type
【精选】资源变现资讯、新闻、自媒体、博客小程序(可引流,开通流量主,带pc后台管理)
60 个神级 VS Code 插件!!
Exploring the source code of Boca Cross Chain Communication: Elements
QT read / write excel--qxlsx worksheet display / hide status setting 4
JMeter learning notes
IDEA 2021.3 执行 golang 报错:RNING: undefined behavior version of Delve is too old for Go version 1.18
Package based on thinkphp5 -tronapi- wave field interface - source code without encryption - can be opened twice - interface document attached - detailed guidance of the author - June 30, 2022 08:45:2
Js根据相同值将数组转换为二维数组
[yitianxue awk] regular matching
Unity脚本程序的开发