当前位置:网站首页>【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
【软件工程之美 - 专栏笔记】37 | 遇到线上故障,你和高手的差距在哪里?
2022-08-04 17:49:00 【if...else...】
专栏信息
专栏作者:宝玉
专栏发布平台:极客时间

主要内容
新手和高手在应对故障时有什么不同?大厂在处理线上故障时,有哪些可以学习借鉴的地方。
一、遇到线上故障,新手和高手的差距在哪里?
新手遇到复杂的线上故障,不知道该怎么下手
遇到复杂的故障,通常新手就不知道该怎么下手了。
对高手来说,会在实践中总结一套自己解决问题的步骤,遇到问题,会按照解决问题的步骤有条不紊地去分析和解决。
新手遇到线上故障,会想着马上修复 Bug
当发现 Bug 后,尤其是自己的 Bug,很多开发人员马上就想到了 Bug 的修复方案,迫不及待就要去写代码打补丁了。
而对于高手来说,会首先对故障进行评级,看对用户的影响范围,如果是核心业务,大面积影响用户,那么当务之急是恢复生产,然后再考虑如何去修复 Bug。
新手遇到线上故障,不知道如何快速定位到 Bug 在哪
对于比较复杂的线上故障,新手通常不知道从哪里下手,看日志看代码都看不出所以然,而高手却总能快速地定位到 Bug 在哪。
新手解决完线上故障后,下次可能还会发生类似故障
对于线上的故障,如果不找到产生的原因,那么下一次还会发生类似的故障,甚至比以前还更严重。
高手对于线上故障,会仔细分析 Bug 产生的原因,从根本上解决,避免类似的故障再次发生。
二、大厂都是怎么处理线上故障的?
通过看这些大厂的故障处理流程,你会发现,大厂其实是把高手解决故障的方式,变成故障处理的流程和操作手册,并且通过反复地故障演习。不断练习和强化对故障处理的流程,让系统更健壮,让新手也可以快速上手,做到高效处理线上故障。
至于具体的处理流程,其实大同小异。
- 首先,对故障进行评级。
- 其次,要马上恢复生产,避免进一步损失。
- 另外,要分析故障原因,修复故障。
- 最后,记录故障发生处理全过程,分析故障原因,提出后续改进方案。
三、大厂处理线上故障处理机制有哪些值得借鉴的地方?
故障报警和轮值机制
要做到最快速度处理线上故障,关键就是要让正确的人第一时间就可以去响应。正确的人就是对故障服务最熟悉的人,通常就是这个服务的开发人员。
实战演习
实战演习就是频繁地对故障进行演练,来测试平时做的这些方案是不是真的可行,这样遇到真正的故障,才不至于手忙脚乱不知道如何应对。
其中最有名的就是 Netflix 的混乱猴子军团。
也有人把这样的实战演习叫“混沌工程”。
日志记录和分析工具
对于软件来说,线上出现问题,分析日志记录是最简单有效的定位问题方式。
还有一些其他好的实践,例如说新功能上线时,灰度发布的策略。通过开关控制,先让一小部分用户使用,如果出现故障,马上关闭开关,避免影响。
四、其他摘抄
- 恢复生产并不一定需要修复 Bug,可以用一些临时性的方案,比如说回滚系统到上一个稳定的版本;重启服务看是否能恢复正常。
- 一种常见手段就是先重现 Bug,因为有了重现的步骤,就等于将问题的范围,缩小到重现 Bug 的这几步操作相关的代码上,就很容易发现问题在哪。
- 还有一种手段就是分析错误日志,通过错误日志,可以马上定位到错误在哪里。
总结
今天带你一起学习了线上故障的处理。对于线上故障的处理,基本原则就是要先尽快恢复生产减少损失,然后再去查找原因,最后不要忘记总结复盘。
边栏推荐
- 怎么面试程序员的?傲慢与无礼,就数他牛逼
- 我的大一.
- js函数传参是按值传递还是按引用传递?
- yarn detailed introductory tutorial
- R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、color参数指定柱状图的边框的色彩
- Interval greedy (interval merge)
- 集群监控——Zabbix使用
- 【技术笔记】let 和 var和const的异同
- OpenInfra Days China 2022 | SelectDB to share with you the Apache Doris in Internet advertising business practices
- 44. 通配符匹配 ●●● & HJ71 字符串通配符 ●●
猜你喜欢

CAS:474922-26-4,DSPE-PEG-NH2,DSPE-PEG-amine,磷脂-聚乙二醇-氨基供应
![【 Gazebo introductory tutorial] speak the second model library into robot modeling and visualization (editor) model](/img/db/44a1ac5338879c9e6edd933c28c0af.png)
【 Gazebo introductory tutorial] speak the second model library into robot modeling and visualization (editor) model

面试官:可以谈谈乐观锁和悲观锁吗

《机器学习理论到应用》电子书免费下载

SQL优化最全总结 - MySQL(2022最新版)

buuctf(探险1)

leetcode 13. 罗马数字转整数

Codeforces积分系统介绍

Thrift IDL示例文件

Nacos集群搭建
随机推荐
clickhouse 上下线表
租房小程序登顶码云热门
离线同步odps到mysql 中文乱码是因为?mysql已是utf8mb4
Matlab画图1
Boosting之GBDT原理
el-date-picker 设置时间范围
OpenInfra Days China 2022|SelectDB与你共享 Apache Doris 在互联网广告业务中的实践
Create Sentinel high-availability cluster current limiting middleware from -99
PT100铂热电阻三种测温方法介绍
树莓派通过API向企业微信推送图文
[Web Automation Test] Quick Start with Playwright, 5 minutes to get started
基于clipboard.js对复制组件的封装
小程序学习目标
我的大一.
php如何查询字符串以什么开头
使用bash语句,清空aaa文件夹下的所有文件
树莓派安装samba用来共享文件
【MySQL】数据库的4中隔离级别
NLP未来,路在何方?从学术前沿和业界热点谈起
怎么招聘程序员