服务稳定性保障手段与规范

news2025/2/23 13:03:40

服务的稳定性,对于任何一个在线提供服务给用户的公司来说,都是非常重要的。任何一次线上事故,都可能会给公司带来显而易见的损失。因为相比于其他部门,负责基础技术、公共服务的同学,发生事故的时候很容易暴露在风口浪尖之中,一个小小的变更,都可能会使得多个业务部门服务不可用,因此服务的稳定性保障则显得更加重要。

隐患发现

主动发现——故障演练

参考阿里云的故障演练产品:
故障演练是一款遵循混沌工程实验原理并融合了阿里巴巴内部实践的产品,提供丰富故障场景,能够帮助分布式系统提升容错性和可恢复性。

流程

故障演练建立了一套标准的演练流程,包含准备阶段、执行阶段、检查阶段和恢复阶段。通过四阶段的流程,覆盖用户从计划到还原的完整演练过程,并通过可视化的方式清晰的呈现给用户。
image.png

适用场景

故障演练可适用于以下典型场景:

  • 衡量微服务的容错能力:通过模拟调用延迟、服务不可用、机器资源满载等,查看发生故障的节点或实例是否被自动隔离、下线,流量调度是否正确,预案是否有效,同时观察系统整体的QPS或RT是否受影响。在此基础上可以缓慢增加故障节点范围,验证上游服务限流降级、熔断等是否有效。最终故障节点增加到请求服务超时,估算系统容错红线,衡量系统容错能力。
  • 验证容器编排配置是否合理:通过模拟杀服务Pod、杀节点、增大Pod资源负载,观察系统服务可用性,验证副本配置、资源限制配置以及Pod下部署的容器是否合理。
  • 测试PaaS层是否健壮:通过模拟上层资源负载,验证调度系统的有效性;模拟依赖的分布式存储不可用,验证系统的容错能力;模拟调度节点不可用,测试调度任务是否自动迁移到可用节点;模拟主备节点故障,测试主备切换是否正常。
  • 验证监控告警的时效性:通过对系统注入故障,验证监控指标是否准确,监控维度是否完善,告警阈值是否合理,告警是否快速,告警接收人是否正确,通知渠道是否可用等,提升监控告警的准确和时效性。
  • 定位与解决问题的应急能力:通过故障突袭,随机对系统注入故障,考察相关人员对问题的应急能力,以及问题上报、处理流程是否合理,达到以战养战,锻炼人定位与解决问题的能力。

被动发现——监控告警

通过建立完善的监控告警机制,提前预知故障风险,减少故障持续时间
常见的监控有

网络分析与监控

站点监控
监控各云服务资源的监控指标,探测云服务ECS和运营商站点的可用性,并针对指定监控指标设置报警。使您全面了解阿里云上资源的使用情况和业务运行状况,并及时对故障资源进行处理,保证业务正常运行。
站点监控的典型应用场景如下:

  • 运营商网络质量分析通过站点监控的探测点,模拟最终用户的访问行为,可以获得全国各地到目标地址的访问数据,从而知晓各地域、各运营商的网络质量,针对性进行网络优化。
  • 性能分析通过创建站点监控任务,可以获得访问目标地址的DNS域名解析时间、建连时间、首包时间、下载时间等,从而分析服务的性能瓶颈。

拨测运营商探测点
从不同地域运营商网络的探测点发起HTTP、Ping、DNS或路由追踪的网络拨测,以便了解不同地域网络环境访问检测目标的情况。

事件监控

事件监控汇集产品故障、运维事件以及用户业务异常事件,提供按产品、级别、名称、应用分组汇总统计事件,便于关联资源和复盘问题。

日志监控

日志监控提供对日志数据实时分析、监控图表可视化展示和报警服务。常见的架构如下
image.png

自定义监控

自定义监控提供了自定义监控项和报警规则的功能,通过上报监控数据接口,将自己关心的业务指标上报至云监控,并在云监控上添加监控图表和设置报警规则,对于故障指标发送报警通知,便于及时处理故障,保障业务的正常运行。

制定稳定性规范

业务重大活动提前同步

活动通知邮件->运维及下游服务(配合压测及扩容)->运维评估确认->活动结束->运维评估确认(缩容)

定义故障标准

P0故障
● 定义:业务关键流程不可用
  ○ 业务关键流程界定
    ■ 会造成资损的:交易支付相关核心流程(如:下单流程,支付流程等)
    ■ 会造成客诉的:用户体验相关核心流程(如:用户高频访问功能点)

● 定级参考度量方向
  ○ 故障时长
  ○ 影响用户规模
  ○ 客诉/资损数量


处理规范
原则
1. 恢复第一:快速恢复服务可用为主,定位根本原因彻底解决为次,最小化故障影响是第一目标
2. 情况通报:情况通报须贯穿整个处理全流程,故障情况应当定时向集团消防队和相关群组通报
3. 恢复确认:故障恢复需要在多个确认方交叉验证通过,且建议设置合适的过渡观察期确认
4. 复盘&改进:故障必须复盘并产出优化方案,方案须细化为可验收的Action并指派负责人

                                        	

定义故障处理规范

image.png

熟悉故障处理可用工具

  • 链路平台:查询应用的链路日志
  • 日志平台:提供应用日志的存储查询功能
  • 监控平台:观测应用多个维度的指标表现
  • arthas:arthas
  • 堆栈分析:CPU过高、内存过高等

故障分析定位

分析最近发生的变化

  • 故障系统最近是否有更改发布
  • 依赖的系统是否更改发布
  • 依赖的基础平台与资源是否升级过?
  • 运营是否在系统内做过运营变更?
  • 最近的业务量是否涨了?
  • 运营方是否有促销活动?

故障排查流程

可参考下图
image.png

分析监控数据

应用层面监控

  • JVM内存
  • GC
  • 各种连接池状态

系统层面监控包括

  • 系统的 CPU 使用率
  • Load average
  • Memory
  • I/O (网络与磁盘)
  • SWAP 使用情况
  • 线程数
  • File Description 文件描述符等

中间件层面监控包括数据库、缓存、消息队列。

  • 对数据库的负载、慢查询、连接数等监控
  • 对缓存的连接数、占用内存、吞吐量、响应时间等监控
  • 消息队列的响应时间、吞吐量、负载、堆积情况等监控

故障复盘规范

参与人员
主持人:故障模块/系统的研发TL担任,主导整个复盘会的流程节奏
汇报人:故障处理人负责汇报整个故障过程
其他人员:故障模块/系统的研发、运维、稳定性人员
复盘时间
故障修复后的3个工作日内(尽量早,以便大家总结经验)
复盘会由主持人发起,具体时间由主持人协调确定
故障定级
参考定级标准确定故障级别
故障命名
故障日期 − {故障日期}- 故障日期{业务线}- 模块 / 系统 − {模块/系统}- 模块/系统{故障现象}
复盘流程
主持人简单介绍故障情况(问题模块、故障时长、影响范围等)
处理人汇报故障发生、反馈、处理、修复、验证整体过程情况
主持人&处理人分析故障产生具体原因并以此提出优化方案供与会人员共同讨论
根据优化方案,与会人员共同细化分解任务并确定落实人员(一个主导人)和时间
会后主持人依据故障报告模板产出故障报告并邮件抄送所有与会人员
故障报告模板

故障名称:
故障发生时间:
故障报告时间:
故障恢复时间:
故障持续时间:
故障影响范围:
故障等级:
故障处理人:
故障责任人:
故障描述:
故障处理过程:
故障原因分析:
改进方案(任务、落实人、落实时间):

线上变更规范

除遵循通常的发布流程外,还应当对可能产生的故障做以下准备和检查:
checklist

在这里插入图片描述

总结

先保证基础设施的完备——完善的监控告警机制,配合主动发现,减少应用服务的故障隐患,再建立稳定性规范,将可能发生的故障减到最少,故障时长降到最低。

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

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

相关文章

Kaldi语音识别技术(七) ----- 训练GMM

Kaldi语音识别技术(七) ----- GMM 文章目录Kaldi语音识别技术(七) ----- GMM训练GMMtrain_mono.sh 用于训练GMM训练GMM—生成文件训练GMM—final模型查看训练GMM—final.occs查看训练GMM—对齐信息查看训练GMM—fsts.*.gz查看训练GMM—tree决策树查看align_si.sh 用于对齐训练G…

Cookies与Session会话技术详解

引言:日常生活中,人和人之间沟通交流,涉及到一个词----会话,软件中一样存在会话,如:网购登录,访问公司OA系统也是不断的会话,软件中如何管理浏览器客户端和服务端之间会话过程中的会话数据呢&am…

oscp_靶场练习_Lame

oscp_靶场练习_Lame 1. nmap扫描: └─# nmap 10.10.10.3 Starting Nmap 7.92 ( https://nmap.org ) at 2023-02-20 23:21 EST Nmap scan report for 10.10.10.3 Host is…

switch的使用细节

1.switch的基本语法 switch(表达式){ case 常量1: 语句块1; break; case 常量2: 语句块2; break; … case 常量n: 语句块n; break; default: default语句块; break; } (1)switch关键字,表示switch分支 (2)表达式对应一…

web自动化测试中的几个定位方法

1. id定位 # id定位,属性 操作 返回 webELement 对象 ele1 driver.find_element_by_id("kw") print(ele1)2. 标签名定位 tag_name 不能唯一的找到特定的元素 ele2 driver.find_element_by_tag_name("input") # (译:泰格.内幕…

数组-二分查找-搜索插入位置/在排序数组中查找元素的第一个和最后一个位置/x 的平方根/有效的完全平方数

二分查找 35搜索插入位置 https://leetcode.cn/problems/search-insert-position/submissions/ class Solution:def searchInsert(self, nums: List[int], target: int) -> int:l 0r len(nums)-1# // 整数除法 int /浮点数除法while(l<r):mid l (r - l)//2if nums…

Java基础43 异常(Exception)

异常&#xff08;Exception&#xff09;Exception1.1 异常的概念1.2 异常体系图&#xff08;☆&#xff09;1.3 异常处理分类1.3.1 运行时异常&#xff08;☆&#xff09;1.3.2 编译时异常&#xff08;☆&#xff09;1.4 异常处理&#xff08;☆&#xff09;1.4.1 try-catch异常…

关于联想Y7000P睡眠后无法唤醒问题修复

这个新的机器是WINDOWS11的&#xff0c;症状了自己睡眠后就醒不过来了&#xff0c;于是我找到了公众号&#xff0c;提示下载一个软件修复驱动&#xff0c;http://tools.lenovo.com.cn/tools/exeTools/download?tool_id233但是执行后还是发现有问题&#xff0c;而且比较诡异于是…

【C++】秋招实习面经汇总篇

C面经汇总 系列综述&#xff1a; 目的&#xff1a;本系列是个人整理为了秋招和实习面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡背诵量与深入程度。 来源&#xff1a;材料主要源于阿秀的笔记和《王道考研复习指导》进行的&#xff0c;每个知识点的修正和深入主要…

MySQL索引篇

文章目录说明&#xff1a;索引篇一、索引常见面试题按数据结构按物理存储分类按字段特性分类按字段个数分类索引缺点&#xff1a;什么时候适用索引&#xff1f;什么时候不需要创建索引&#xff1f;常见优化索引的方法&#xff1a;发生索引失效的情况&#xff1a;二、从数据页角…

C#把图片放到picturebox上的指定位置,PointToClient与PointToScreen解读

1、C#中如何把图片放到picturebox上的指定位置 构造一个跟picturebox1一样大小的Bitmap&#xff0c; 设置给picturebox1&#xff0c; 然后在上面画图 Bitmap image new Bitmap(picturebox1.Size.Width, picturebox1.Size.Height); Graphics device Graphics.FromImage(imag…

FPGA电源电流参数

一、FPGA里各个电源释义 VCCINT VCCINT是FPGA芯片的内核电压&#xff0c;是用来给FPGA内部的逻辑门和触发器上的电压。即芯片的晶体管开关是有核心电压提供。当内部逻辑工作时钟速率越高&#xff0c;使用逻辑资源越多&#xff0c;则核心电压供电电流会更大&#xff0c;可高达几…

【halcon】模板匹配和仿射变换总结

前言 模板匹配和仿射变换&#xff0c;经常一起使用&#xff0c;他们之前的位置变换一般有两种情况&#xff01; 情况一 模板是一个很正的图&#xff0c;利用模板的位置&#xff0c;将歪的图像摆正。 情况二 模板和图片正不正都无所谓&#xff0c;只需想模板的位置&#xff0…

内网穿透/组网/设备上云平台EasyNTS上云网关的安装操作指南

EasyNTS上云网关的主要作用是解决异地视频共享/组网/上云的需求&#xff0c;网页对域名进行添加映射时&#xff0c;添加成功后会生成一个外网访问地址&#xff0c;在浏览器中输入外网访问地址&#xff0c;即可查看内网应用。无需开放端口&#xff0c;EasyNTS上云网关平台会向Ea…

进程间同步

并发 线程和进程都是一个调度的单位 并发进程之间的关系 交互关系之间的关系是很复杂的&#xff0c;假如一个进程需要等待另外一个进程的调用才可以运行&#xff0c;就如下面这个例子 竞争关系 上面这个区叫做临界区域 协作方式 前面我们说过异步和同步的概念 那么异…

算法笔记(十一)—— 并查集、KMP

并查集 支持集合快速合并 所有数据生成各自的集合&#xff0c;需要提供查询两个两素是不是属于一个集合&#xff0c;和集合合并操作&#xff0c;并查集能够在常数时间级别上对两个操作进行实现 1. 构造结构&#xff08;数据指针&#xff09;&#xff0c;将自己的指针指向自己…

激光雷达介绍

全球汽车行业正在进行自动化变革&#xff0c;这将彻底改变交通运输的安全和效率水平。戴姆勒在S级豪华车型中引入L3级自动驾驶&#xff08;L3&#xff0c;在特定条件下自动驾驶&#xff0c;人类驾驶员一旦被请求就会随时接管&#xff09;是自动驾驶革命的一个重大突破。其他多家…

浅谈SQL中的union和union all

文章目录概念基础语法使用技巧区别总结概念 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 UNION 操作符选取不同的值&#xff0c;如果允许得到重复的值&#xff0c;可以使用 UNION ALL 基础语法 -- u…

基于Spring Boot+Vue的在线考试系统(有错题训练功能)

文章目录项目介绍主要功能截图&#xff1a;登录系统日志在线考试错题训练考试记录题库管理试题管理角色管理用户管理部分代码展示设计总结项目获取方式&#x1f345; 作者主页&#xff1a;Java韩立 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、…

解决:文档根元素 “configuration“ 必须匹配 DOCTYPE 根 “null“或者“mapper” 必须匹配 DOCTYPE 根 “null”

文档根元素 "configuration" 必须匹配 DOCTYPE 根 "null 出现的原因是在配置mybatis-config.xml的时候没有把文件中的配置信息加进去导致的 解决的方式只需要在<configuration>标签前面加上如下内容: <?xml version"1.0" encoding"UT…