嘿,大家好!我是伍六七。
作为一个在编程界摸爬滚打多年的老鸟,今天我想和大家聊聊咱们程序员成长的那些事儿。我们都知道,这条路可不简单,但每一步都特别关键。
怎么才能从一个刚毕业的小白,成长为一个职场独当一面的专家。
诺奖得主 罗曼·罗兰 曾说:“世界上只有一种真正的英雄主义,那就是在认清生活的真相后依然热爱生活。”
我要说的是,你只有经历过无数的故障,你才能成为一个靠谱的程序员。
线上故障,是成长的催化剂
说到故障或者线上问题,每个程序员都碰到过不少。
每次遇到问题,都得火急火燎地找原因,想办法。这不仅仅是考验你的技术,更是考验你的反应速度和解决问题的能力。
但是,事后我们分析,每次经历故障和线上问题,我们的思维方式和能力,都会有比较明显的提升。
说线上故障,是成长的催化剂,一点都不为过。
滴滴 2023 年 11 月 27 日的故障,大家应该都知道。
简单介绍一下影响:
2023 年 11 月 27 日晚间,滴滴 App 出现严重故障,包括不显示定位和无法打车等问题。 故障时间:故障持续了近 12 小时,影响范围广泛,给乘客和司机造成了不便。 同时,员工想打车回公司处理故障,因为这个故障也不能打车,只能通过其他打车平台进行打车。
故障原因:
滴滴在 2023 年 11 月 27 日晚上进行了一次大规模的K8s集群在线热升级,从版本 1.12 升级到 1.20。 这次升级过程中,由于某些原因导致所有 Pod(容器)被杀掉,而 K8s 的元数据已经被新版本修改,无法回滚,从而导致恢复时间延长.
我们能学到什么?
1、控制集群规模:当一个集群规模很大时,很容易在意想不到的地方发生类似的问题。
2、可重启:k8s 官方推荐的升级方式是,逐一地将每个节点上的 Pod 驱逐到其他节点上去,从集群中移除节点,升级,然后再将它重新加入到集群,这是一种滚动升级机制。而滴滴这次升级采用非常规的不重启升级,从而将风险扩大。
3、爆炸半径:大规模的集群,存在爆炸半径过大的稳定性风险。
复盘,让经验成为财富
处理完故障,事情还没完呢。
复盘,这是咱们从失败中站起来的关键一步。把问题摊开来看,分析原因,总结经验,这样下次再遇到类似的问题,咱们就能游刃有余了。
说到底,成为一个成熟的程序员,不光是技术要过硬,更重要的是要有那种面对问题不慌不忙,系统性解决问题的思维。
每次故障都是一次学习的机会,把握住了,你就能在这个快速变化的行业里站稳脚跟。
看到这里了,也给大家分享一下,我平时做问题根因分析和故障复盘的方法论,希望对大家有帮助~
问题根因分析
对于具体的一个问题,我们不需要十万个为什么?但是 5 个左右的为什么(why)是我们找到问题根因的基本保证,它让我们避免浮于表面,错过根本原因。这就是 5W 根因分析法。
经典丰田汽车的例子
问题 1:为什么机器停了?答:因为机器超载,保险丝烧断了。 问题 2:为什么机器会超载?答:因为轴承的润滑不足。 问题 3:为什么轴承会润滑不足?答:因为润滑泵失灵了。 问题 4:为什么润滑泵会失灵?答:因为它的轮轴耗损了。 问题 5:为什么润滑泵的轮轴会耗损?答:因为杂质跑到里面去了。
没有问到根因之前,你只是停留在表面原因。
你的解决方案也是治标不治本,只有解决了根本原因,问题才不会重复发生。
不过要注意的是,5W 只是一个经验值,具体几个问题能找到根因没有定值,有的时候可能是 3 个,有的时候可能是 8 个,我们需要灵活使用。
问题复盘
对程序员来说,bug 不可避免,问题不可避免,发生了问题,怎么客观的进行复盘,找到发生问题的根因,避免别人的锅甩到我们头上,也是有方法论的。
使用四线复盘法,能够让我们对问题复盘有自己的判断,基于时间、事实、问题根因、责任链、改进线进行问题复盘,能够让我们得到一个大家都认可的复盘结果。
学会了嘛?学会了记得点个赞~