江湖传言,系统的稳定性、高效能和可扩展性兼得是不可能三角。
百融云创的技术人员用五年的时间,攻破了这个不可能三角。当前百融云创MaaS云平台安全可靠,在满足日常1亿、峰值3亿次查询请求下,API稳定性高达99.999%。
这些数字组合在一起意味着什么呢?
假设稳定性为99.9%,这1亿次调用中则有10万条故障请求。如果稳定性为99.999%,则这两项数据就变成了1000条故障请求,故障时间可以忽略不计。总之一句话,小数点后面数字越大,事越小。
API这么稳是怎么实现的呢?
这还得从2019年的一天说起。北京职场的一间办公室里气氛热烈,面对业务的快速发展,一场关于质量管理的会议召开。API稳定性是质量管理的重中之重。会上,确立了一个在当时看来近乎苛刻的目标。
“我想要5个9,谁同意,谁反对。”
就这样,质量管理部、研发、运维、QA以及公司一切可以配合的部门,启动了“五九会战”。
但很快大家的心情就从这一兴奋的目标中平复过来,很多同事都是业内老兵,他们深知99.999%这个数字意味着什么。这将是一个前所未有的挑战,他们要向行业的珠穆拉玛峰发起冲击。
打造SRE方案
传统运维是一种被动的形式,技术人员始终忙于奔命,到处救火。大家的心理状态可以用一句话形容,“我这一生,如履薄冰。你说我能走到对岸么?”
善战者无赫赫之功。百融云创的目标是要化被动为主动,将主动权牢牢掌握在自己手里。SRE方案是实现这个目标的关键。
该方案由Google SRE工程师Mikey Dickerson在2013年提出,这个方案的精髓是将系统稳定性需求按照基础程度,进行了不同层次的体系化区分,形成稳定性标准金字塔模型。
百融云创确立了SRE建设方案,但SRE是一个庞大的系统工程,千头万绪,要从哪里抓起呢?
首先要确立观测目标。
我们的核心是服务客户,团队选择距离客户最近的产品线作为观测目标。
确立好观测目标后,团队以故障前、故障中、故障后三个阶段为抓手,推动整个SRE体系的建设。
监控告警体系:完善的监控告警体系是保障系统稳定性的基石,缺少监控的系统,如同蒙上眼睛狂奔的野马。我们需要时刻了解API的运行情况,并根据运行情况排查系统故障、判断是否需要优化性能、是否需要扩容等。团队从三个方面来搭建监控系统:
监控系统:指标监控:团队搭建了Prometheus监控组件,收集各个服务、中间件、硬件设备等上万个指标,就像一个“天网”系统,时刻监测系统运行时的状态。
日志监控:团队搭建了ELK日志平台,收集大量日志,这些日志详实地记录着程序运行时的各种事件,方便排查服务故障。
全链路监控:团队搭建了全链路的监控系统,把每一次的系统调用经过的微服务和中间件串联起来,结合指标和日志监控,实现故障排查。
有了完善的监控系统,还得搭配敏捷的告警系统。
告警系统:团队从告警渠道(支持发送邮件、钉钉、短信、电话)、指标告警、日志告警三个层面进行完善。团队自研了日志告警组件,支持按照告警次数、告警周期、阶梯告警等方式,对不同服务、不同类型的日志告警进行压制,可以有效避免告警风暴。
告警手段的完善,带来了一个问题。当告警大量产生时,要如何判断和应对呢?为此,团队做了自动故障诊断功能,首先采用决策树的方式对故障进行定级,确认故障的开始时间和严重程度。其次,将故障持续时间内的告警进行筛选和聚合,并根据全链路监控生成故障图,将发生异常的服务和中间件关联起来展示。最后,根据故障信息和故障图,对故障根因服务做初步的定位,这样能辅助减少定位故障根因的时间,快速排查故障。
故障应急:为应对应急情况,团队组建了故障应急小组,7*24战备值班,时刻战备和战斗状态。力争以最短时间内解决问题、将损失将至最低。
自动故障切换:人工处理故障存在不确定性,为了最大程度减少这种不确定性。团队开发了智能监控系统,实现切换过程的自动化。百融云创已实现了同城双活,当某个机房的服务出现故障时,可以在秒级自动切换到异地机房,恢复系统的正常运行。
事实上,这些环节也只是整个稳定性建设的冰山一角,SRE体系建设是由众多大大小小的事项组成。建设过程异常艰辛和复杂,在团队的不懈努力下,不仅带来了系统稳定性的稳步提升,还实现人、工具、流程的协同共治。比如,在流程上,制定了大量的规范(开发规范,发布规范,变更规范等),实现了一系列标准作业流程;大量利用自动化、智能化工具,来执行重复性的运维任务,如部署、配置管理、监控和故障排除。减少人为可能带来的错误,并提高效率。
将一件事做上成千上万遍
系统稳定性的提升,不仅是对技术的考验,更是对人的考验。技术并不是万能灵药,人的作用非常重要,需要一群崇尚工匠主义的人,不仅能从0到1,构建一个宏大的体系架构。还能逢山开路,遇水架桥,集中攻破一些技术难关。还能张飞绣花,处理好大量繁杂而又细小的技术点。
稳定性建设并不是一劳永逸的事情,它非常依赖长期迭代不断完善。团队进行了大量的极限压力测试,以此来做容量规划。进行了多次演习,以己之矛攻己之盾,以此来检查系统可能存在的漏洞。这还不用说日常的巡检工作,我们的技术同事说,做好稳定性,人的主观态度与技术同样重要,要耐心地把一件事做上成千上万遍,周而复始。就像攀登珠峰,沿着目标一步一步走下去,才能达到目的地。
这一群崇尚工匠主义的人,五年如一日的坚守,换来的是稳定性数字的不断刷新。99.992、99.994、99.998,每一年这个数字都在艰难的刷新记录。
在2023年公司年会上,团队得到了公司大力表彰,几十人先后登台领奖。
荣誉是属于过去的,稳定性是一个永远在路上,永远不能懈怠,永远追求极致的工作。
当初,99.999%那个看似遥不可及的目标,已经在2024年上半年成功达成,在珠峰顶完成插旗。
从99.998%到99.999%,这万分之一的提高,是技术难度指数级上升。为了这十万分之一,团队在今年进行了大量新的工作。我们的脚步不会停下,越过一座山峰,还要坚定向更高峰走去,“零缺陷的质量管理”,正在成为新的奋斗目标。
(来源:点财网)

