Appearance
高可用稳定性-3+1保障体系
看在前面
美团 vespa 团队负责的订单结算落地页"美团 vespa"是流量入口类的展示系统,高频迭代、依赖庞杂。本文以该系统落地页高可用建设为例,介绍美团技术团队的实践。高可用建设可以分为主动防御(预先建设)和被动兜底两个方向。高可用建设做得好,可以提前暴露问题、实现快速止损,还可以给故障定位争取宝贵时间。
背景与整体思路
上线过程中的稳定性问题通常有两类。一类是因代码分支合并、环境差异这类原因导致的部署失败。另一类是因流量突增、机器故障、依赖服务抖动这类原因导致的系统异常。对于部署类问题,vespa 团队通过 DevOps 体系建设、发布流程标准化解决。对于系统类异常,则通过"3+1"保障体系兜底。
主动防御:提前发现问题,缩小故障影响范围,减少故障发生。被动兜底:在故障发生时自动止损,防止小故障演变成大故障。3+1 框架总览如下:
高可用 3+1 保障体系
┌──────────────┬──────────────┬──────────────┐
│ 预防(2) │ 发现(1) │ 定位(1) │
│ 全链路压测 │ 监控告警 │ 监控+链路追踪 │
│ 预案 │ │ │
└──────────────┴──────────────┴──────────────┘
+ 兜底(1):降级即:预防(全链路压测 + 预案)→ 发现(监控告警)→ 定位 → 兜底(降级)。
四个环节的分工可以概括为:
压测回答"系统在多大流量下会出问题"——提前把容量水位摸清楚;
监控告警回答"问题什么时候发生、发生在哪里"——分钟级发现;
预案回答"出了问题怎么快速止血"——开关化的应急手段;
降级回答"止不住时丢什么保什么"——牺牲非核心换核心可用。
监控告警
监控告警是系统体征的检测仪,建设分三步。包括 changelog(基础设施)、阈值评估(核心功能)、告警收敛治理(使用体验)。
changelog 是监控告警的基础设施,量化服务水平(SLA)的前提是能准确度量系统的每一次变更和异常。系统核心监控一般覆盖四类指标:
流量指标(QPS/RT/成功率);
依赖指标(下游服务超时率、DB/缓存命中率);
资源指标(CPU/内存/GC/线程池水位);
业务指标(下单量、支付成功率)。
先有可靠的 metrics,才有可靠的告警。
阈值评估旨在解决"阈值如何配置"的问题。好的告警阈值应在系统异常时及时发现,又不在正常波动时误报。静态阈值很难兼顾,例如大促与日常的流量水位完全不同。美团采用中心化的阈值评估(measures 系统提供分钟级动态阈值服务)。该服务提供全局离群检测与固定值阈值两种模式。阈值结合同比、环比算法计算,避免逐接口人工拍值。
告警收敛治理解决"告警风暴"问题:故障时告警数量骤增反而降低处理效率。治理动作包括:
告警压缩:同一故障的多条告警按时间窗、调用链聚合成一条;
告警分级:P0~P3 分级,只有高等级告警走电话/短信,低级别进群机器人;
值班排障 SRE 制度:告警必响应、响应必记录,形成"告警—处理—复盘"的完整循环。
全链路压测
全链路压测旨在提前发现问题、评估系统容量。美团搭建了基于流量录制的全链路压测平台(AutoMan),可定时或实时对系统压测,具体包括:
流量构造:根据线上流量特征构造压测流量,支持定时/实时,覆盖核心链路场景;
数据构造:自动构造压测数据,并在数据库、缓存层打标(影子表/影子库)。这保证压测数据与线上数据隔离;
存储构造:压测流量进入存储层时路由到影子存储,避免污染线上数据;
集合点一致性校验:利用缓存计数器实现集合点(蓄洪)功能,模拟瞬时洪峰流量,并校验数据一致性。
预案
预案是在系统异常时快速止血的手段,包括系统预案和业务预案两类:
动态线程池参数:底层 Rpc/TRpc 服务线程池默认参数并不能适配所有业务。系统提供线程池参数动态调整能力,高峰期快速提升处理能力;
个性化服务降级:落地页中"猜你喜欢""频道内推荐"这类个性化服务并非核心链路。异常时可以降级为静态兜底内容。支持热点服务维度、热点接口维度的降级。降级触发方式分两种。被动查询式:调用方超时/失败率超阈值自动降级。主动调用式:手工开关一键降级;
预案演练:预案的价值只有在演练中才能验证。团队定期在低峰期主动注入故障(关闭某个依赖、把某个服务线程池打满)。验证预案是否生效、降级后页面是否可用,把"纸面预案"变成"肌肉记忆"。
准入控制
除了事后止损,还需要在事前控制进入系统的流量:
业务安全维度:针对异常流量(恶意请求、爬虫),底层有风控平台统一拦截。同时上游调用设置差异化超时,避免拖垮下游;
系统安全维度:包括本地限流(Guava RateLimiter)、远程集中式限流(Sentinel 集群流控)。还有基于准入队列+自动扩容的弹性准入。流量超出容量时,它排队缓冲并触发自动扩容,而非直接拒绝。
应用效果
自 3+1 保障体系上线以来,该系统累计执行数十次线上故障演练,自动限流数十次。监控告警的准确率和召回率显著提升,平均故障定位时间(MTTR)大幅缩短。落地页全年可用性不低于 99.99%。更重要的收益是团队心态的变化:从"怕出故障"变成"欢迎故障来演练"。因为每一类已知故障都有对应的发现、定位与止损手段。
经验上值得复制的三点:
高可用建设要先做"兜底"再做"预防"——降级和限流是保命线,先保住底线再谈优化;
阈值、预案都要"演练驱动",没被演练验证过的预案等于不存在;
监控告警要治理,告警风暴比没有告警更可怕。
结语
高可用建设没有银弹,3+1 保障体系的核心思路是:
用监控告警及时发现异常;
用全链路压测和预案提前预防与快速止血;
用降级策略被动兜底;
用准入控制把流量挡在系统之外。
防御 + 兜底双管齐下,系统稳定性才能持续提升。
内容来源:原文 · 2026-10 整理回填。