后端架构师亲述:12个高可用运维真相
|
去年冬天那会儿,架构师老张在群里甩了个文档,标题叫「12个高可用运维真相」,我原以为又是那种“容灾三要素”“熔断降级五步法”的套话,结果点开第一页就乐了——他居然把“优胜劣汰”列成第一条,说“别指望所有节点都稳定,得让不稳定的自己死干净”。这话搁平时我肯定觉得扯,但那会儿我们刚搞砸一个双十二活动,后台监控里全是红,现在想起来手还抖。 那活动是晚上八点上线,我七点五十还在核对短信模板。运营小王蹲在工位旁边啃煎饼,手机屏幕亮得跟探照灯似的,说“渠道A的转化率比预期低15%,要不要切流量?”我盯着电脑上的AB测试结果,页面刷新频率从每分钟变成每十秒——平时根本没人看这玩意儿,那天倒好,全组都盯着数字跳,跟看股票似的。结果八点零三分,活动页突然白屏,监控群里开始疯狂@人,老张在群里甩了句“熔断机制没触发?”,我原以为他骂的是开发,结果发现是运维没配好阈值。 饮水机那边“咣当”一声,保洁阿姨在换水桶,水溅到地上,小王跳起来喊“我的煎饼!”,而我这边手机电量已经掉到18%,充电宝还在会议室充电——那会议室从早上就被产品部占着,说是“紧急对齐需求”,结果我们在门口等了二十分钟,进去发现他们在讨论“活动页按钮颜色要不要从橙色改成红色”。我当时就想,这按钮颜色再重要,能有服务器不崩重要? 说回老张的“优胜劣汰”。他举的例子特损:有次他们做灰度发布,故意把10%的流量切到一台配置最低的机器上,结果那机器三分钟就挂了,但其他节点没受影响。他说“这就是自然选择,弱鸡自己死,强壮的继续扛”。我原以为这是扯淡,结果我们双十二崩的时候,发现崩溃的全是老旧服务器——那些机器平时跑着边缘业务,没人注意,结果活动一来,流量一冲,直接跪了。而新买的云服务器,虽然贵,但真扛住了90%的请求。后来复盘,老张拍着桌子说“早让你们淘汰那些破机器,非说‘还能用’,现在知道疼了吧?” 但最绝的是他说的“监控不是看数字,是看趋势”。那天活动页白屏前十分钟,监控曲线其实已经有点抖,但没人当回事——平时也会抖,大家以为又是“正常波动”。结果老张在群里甩了张截图,说“这抖动频率比平时高3倍,明显是资源不够”,可那时候运维小哥正在打印物料(对,活动物料居然还在用纸质版,说是“领导要签字”),根本没看见消息。等看见的时候,服务器已经跪了,短信和push全发不出去,用户点进来就是404,转化率直接掉到0.3%——平时双十二至少2%的。 后来我们查日志,发现崩溃前五分钟,数据库连接池已经满了,但监控系统没报警。老张说“这就是典型的‘假阳性’太多,运维把阈值调太高,怕被@烦了”。我想起上个月,我们为了减少报警噪音,把“CPU使用率超过80%”的阈值调到了90%,结果那台机器跑到95%才报警,等我们手动扩容,活动已经崩了十分钟。老张说“高可用不是不报错,是报的错得有用”,这话我现在信——报错太多是噪音,报错太少是掩耳盗铃,中间那个度,得靠血泪试出来。 还有条真相特反常识:“别信‘双活’‘多活’,先搞好单活”。我们去年花了几百万搞“同城双活”,结果双十二一崩,发现两边数据不一致,切换过去反而更乱。老张说“双活不是银弹,是给能单活的人准备的保险——你自己单活都搞不定,双活就是双倍麻烦”。我现在看那些吹“多活架构”的文章,总觉得他们在卖保险——卖的时候说“出事了赔你”,真出事了,条款里全是“除外责任”。
文章配图,仅供参考 对了,那天活动崩的时候,产品经理在群里喊“能不能先切回旧版?”,开发说“旧版代码三个月没维护,可能更不稳定”,两边吵了十分钟,最后还是老张拍板“切旧版,至少能显示页面”。结果切过去发现,旧版的短信模板没更新,用户收到的还是“双十二大促”的链接,点进去是404——因为旧版的活动页早就删了。我当时就想,这他妈叫什么“高可用”?这叫“拆东墙补西墙,最后墙全塌”。后来老张在复盘会上说“高可用的核心不是不崩溃,是崩溃了能快速恢复”。他说“你们看淘宝双11,每年都崩,但人家五分钟就能恢复,用户甚至感觉不到——这才叫高可用”。我查了下数据,淘宝双11的可用率是99.99%,我们那天是99.3%——看起来只差0.69%,但放到百万级用户上,就是七千人遇到问题。老张说“这七千人要是都去微博骂,你们猜领导会先骂谁?” 现在回头看,老张那12条真相里,最狠的就是“优胜劣汰”。他说“运维不是养宠物,是养狼——你得让弱的自己死,强的才能活”。我们以前总舍不得淘汰老服务器,觉得“还能用”,结果它们在关键时刻掉链子,反而拖垮了整个系统。现在我们把那些“还能用”的机器全退了,换了更贵的云服务器,虽然成本高了,但至少活动不崩了——领导说“贵点没事,别上热搜就行”。 不过我也有点疑惑:老张说的“优胜劣汰”,是不是太冷血了?那些老服务器,毕竟也陪我们熬过无数个加班夜,现在说淘汰就淘汰,总觉得有点过意不去。但转念一想,技术迭代就是这么残酷——你不用最新的,就会被最新的淘汰。就像我们组那个用了五年的测试机,现在跑个单元测试都要十分钟,而新买的Mac Studio,三分钟就搞定。你说留不留?留了,效率低;不留,心里过不去。老张要是在这,肯定说“留它干嘛?让它体面退役,比留着当摆设强”。 现在距离双十二已经三个月了,我们再没搞过大规模活动——领导说“先稳住,别出幺蛾子”。但我知道,下次活动来的时候,我们还是会紧张,还是会盯着监控曲线发抖,还是会怕“优胜劣汰”没做好,让弱的节点拖垮整个系统。不过至少现在,我们知道了哪些是“弱节点”——那些老服务器、那些没调好的监控阈值、那些“还能用”的旧代码,都是该被淘汰的。而淘汰它们的过程,就是高可用的过程。 至于老张的12条真相,我现在只信三条:“优胜劣汰”“监控看趋势”“崩溃了能快速恢复”。其他的,比如“双活不如单活”“熔断要狠”“别信银弹”,我还在观察——毕竟,我们还没经历过真正的“大考”,比如618,比如双11。到那时候,这些真相到底站不站得住,才能见分晓。不过现在,至少我们不会再把“还能用”的机器留着当定时炸弹了——这算进步吧? (编辑:草根网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


运维老手血泪总结:5大服务器部署深坑
移动互联时代:应用驱动的万物互联新架构
移动互联架构升级:通信、推送与内容分发的元数据融合之道
5G架构重构,4G思维已成性能测试最大陷阱
移动App卡顿元凶:控制架构设计失当
政策驱动下产创融合后端架构破局烟囱式开发
Go站长聚会:13年实战打通全链路运维瓶颈


浙公网安备 33038102330470号