得物C端核心链路稳定性保障实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 得物C端核心链路稳定性保障实践
得物SRE
徐文灏
技术保障&稳定安全
2023 / 11 / 21
2. 目录 CONTENTS
01 得物C端链路的
特点与挑战 03 变更管控
02 链路稳定性治理
方法的演进 04 监控与告警
3. 得物C端链路的特点
12
2015
鉴别
支付订单
下单/比价
推荐/导购
浏览/搜索
注册/登录
算法
社区
履约发货
4. 得物C端链路的挑战
1. 链路复杂
现状:
• 单条链路下几十上百个子节点
• 子节点存在多语言, 多类型中间件的架构
将图片
直接拉入框中
风险:
• 链路梳理困难,难以掌握链路中的情况
• 排障困难, 很难快速定位根因.
• 子节点故障时会连锁导致上游故障.
5. 得物C端链路的挑战
2. 请求量大& 业务波动大
现状:
• 流量大
• 请求量随运营活动波动大
• 短期峰值脉冲比例很大
风险:
• 无法有效评估服务容量,生产服务可能因容量不足导致故障
• 生产接口容易被限流
6. 得物C端链路的挑战
3. 变更频繁
2000+
发布次数已超过2000+,
平均每日发布数量超过
1000+
1000+次配置变更。
100.
风险:
• 增加变更风险
• 链路产生了变化, 治理的内容可能失效
100+
100+运维变更
7. 目录 CONTENTS
01 得物C端链路的
特点与挑战 03 变更管控
02 链路稳定性治理
方法和演进过程 04 监控与告警
8. 链路稳定性治理方法和演进过程
基于链路中服务强弱依赖的治理
我们对链路的治理, 有很重要的一点就是对链路中服务强弱依赖的治理, 识别出链路
中所有的强弱依赖关系,将非核心依赖进行降级,保证链路正常.
商品详情
商品品宣
商品信息
足迹记录
9. 链路稳定性治理方法和演进过程
基于链路中服务强弱依赖的治理
针对单个链路, 识别出链路中所有节点的强弱依赖关系,通过混沌工程进行验证,对强
依赖服务进行治理, 减少服务故障,提升恢复时效.
10. 链路稳定性治理方法的演进
未来
半自动治理
人工治理
早期
SRE只聚焦于基础设施
业务稳定性介入少
人工梳理链路
人工确认强弱依赖
人工计算流量比例
人工成本高
业务覆盖不全,
业务变更不敏感
时间轴
自动链路梳理
人工确认强弱依赖
半自动化验证
?
11. 全自动链路梳理
基于OTEL技术的全链路追踪能力生成链路拓扑.
获取链路拓扑视图。
获取链路子节点。
单次请求
聚合计算拓扑
获取每个
子节点
12. 人工确认强弱依赖
计算获取单服务的上下游依赖后,人工判断强弱依赖
自动化发现新节点,或者变更的依赖, 要求SRE人工判断
13. 半自动化验证
对接演练平台, 自动生成演练case, 人工介入演练
14. 强依赖服务治理
强依赖服务
保障类型 强依赖
独立资源池 ✓
绑核 ✓
变更管控 ✓
双活 ✓
应急预案 ✓
服务解耦 ✓
核心监控 ✓
15. 目录 CONTENTS
01 得物C端链路的
特点与挑战 03 变更管控
02 链路稳定性治理
方法的演进 04 监控与告警
16. 变更管控
发布变更
对服务进行迭代,包含服务代
码,数据库变更, 数据刷数等
>50%
标题内
容 因变更
得物去年故障中,
配置变更
基于配置中心对服务的配置,
规则进行调整.
导致的占比超过50%
运维变更
由运维人员进行的一些变更
操作。
17. 发布变更的优化-蓝绿部署
早期, 我们采取的是滚动部署的方式进行服务部署
问题:
• 发布后直接对接流量,用户会快速感知故障
• 回滚时长慢
• 存在严重的上下游服务依赖
18. 发布变更的优化-蓝绿部署
升级蓝绿发布,这种方式可以保证单边发布,还支持灰度切流
优点:
缺点:
• 发布后可灰度, 影响较小 • 成本较高
• 出问题后回滚快,只需切流即可 • 对自动化及运维监控能力要求高
19. 发布变更的优化-应用架构
流量规则SDK:
• 识别发布通道
• 接收变更事件
• 实现流量控制
20. 蓝绿部署架构-MQ
多消费组模式
• 原始消费组消费无标识流量
• 蓝消费组消费蓝标流量
• 绿消费组消费绿标流量
21. 发布变更的优化-容器
• 拆分workload.
• 由上层统一调度双边节点
22. 蓝绿部署架构-发布流程
日常流量
开始发布
• 双边流量互通 • 创建发布通道
• 流量均衡 • 切分单边流量
蓝集群(右侧)摘流发布
• 蓝集群流量为0
蓝集群(右侧)引流
• 蓝集群小流量
23. 发布变更的优化-发布监控
• 实时观测观察流量比例
• 观察服务错误状态
24. 运维变更优化
运维变更的特点:
治理三板斧:
规范
• 难管控
• 人为影响因素高
• 破坏性大
运维变更
自动化
流程
25. 运维变更规范-规范
变更对象等级
变更等级
变更操作等级
等级 业务系统
高 P0 级业务系统
变更对象等级
中 线上非P0 级应用
低 内部系统
高风险 低风险
高
中 P0
P1 P2
P2
低 P2 P2
变更要求
变更操作等级
等级
高
操作类型
修改,删除,缩容
变
更
等
级
P0
P1
低
新增,扩容
P2
申
请
时
效
至
少
提
前
12
小
时
变更
窗口
02:00
-
06:00
02:00
-
06:00
任意
时间
变更方
案
回滚方案
交叉审核
可灰度
√
√ √ √ √ √ 非必须 非必须
√ 非必须 非必须 非必须
26. 运维变更优化-流程
常规变更
紧急变更
27. 运维变更优化-自动化
白屏操作
工单审批
自动化执行
人工确认
28. 目录 CONTENTS
01 得物C端链路的
特点与挑战 03 变更管控
02 链路稳定性治理
方法的演进 04 监控与告警
29. 监控与告警
服务
OOM
服务出现
异常
机器宕机
错误率上升
RT上升
订单下跌
Redis连接
失败
下游错误
率上升
关键词
CPU飚高
在最初,告警噪音大、故障追溯难
服务不可用!
30. 监控与告警-告警治理
告警分类
无效告警治理
告警分级
合理配置告警类型,进行告 定期统计高峰告警响应情 根据告警的影响因素,合理
警分组操作, 便于对告警 况, 分析情况后推进处理 设置告警优先级,确保关键
进行统计
或紧急的告警能够及时通
知运维人员
31. 基于SLO的告警
V(容量)
A(可用性)
创建订单接口异常下跌
创建订单可用性异常(客户端)
SLO告警
SLI指标:
VALET 方法
L(延迟)
E(错误)
T(故障单)
创建订单接口大于XXX ms的比例大于 创建订单稳定性大于
XXX 99.99%
创建订单接口错误率大于XX(服务端)
客服工单响应数
32. 故障定位
基于trace链路,快速定位故障
33. THANKS