31 | 极端业务场景下,我们应该如何做好稳定性保障?
我们所面对的极端业务场景
可预测场景:双11
不可预测场景:鹿晗公布恋情
我们要迎接的技术挑战
- 运维自动化
标准化覆盖面是否足够广泛,应用体系是否完善,持续交付流水线是否高效,云上资源获得是否足够迅速,这些都是运维自动化的基础。特别是对于不可预测的场景,考验的就是自动化的程度。 - 容量评估和压测
我们只有对系统容量十分清楚,才能针对特定场景判断出哪些应用和不见需要扩容,扩容多少,扩容顺序如何。同时,系统容量的获取,需要有比较完善的自动化压测系统,针对单接口、单应用、但链路以及全链路进行日常和极端场景下的模拟压测。 - 限流降级
对于超出容量的请求进行限流,请用户耐心等待一下
对于非核心的功能,在峰值时刻进行降级,以降低系统压力。 - 开关预案
系统功能开关,比如当缓存故障事,我们就需要将请求转发到数据库上,目的只有一个,让系统可用。 - 故障模拟
类似Chaos Engineering的故障模拟系统,也需要建设起来,模拟出一些常见,比如CPU异常,RT响应异常,QPS异常等等,看我们的预案是否能够快速执行,能够保持系统或将系统快速恢复到正常状态。 - 监控体系
指标采集和统计,异常判断
极端业务场景下的不确定因素
对于稳定性而言,用户访问模型才是关键,这个摸不准,只有技术没有用的,这就更需要我们能够深入业务,理解业务。
32 | 稳定性实践:容量规划之业务场景分析
容量规划,就是对复杂业务场景的分析,通过一定的技术手段(如压力测试),来达到对资源合理扩容,有效规划的过程。
33 | 稳定性实践:容量规划之压测系统建设
第一个维度,压测粒度
- 单机单应用压力测试
- 单链路压力测试
- 多链路、全链路压力测试
第二个维度,压测接口及流量构造方式
- 线上流量回放、
- 线上流量引流
- 流量模拟
Gatling
第三个维度,施压方式
第四个维度,数据读写
34 | 稳定性实践:限流降级
什么是限流和降级
限流:它的作用是根据某个应用或基础部件的某些核心指标,如QPS或并发线程数,来决定是否将后续的请求进行拦截。
降级:它的作用是通过判断某个应用或组件的服务状态是否正常,来决定是否继续提供服务。
常见的限流解决方案
- 第一类,接入层限流
nginx限流,API路由网关模式 - 第二类,应用限流
- 第三类,基础服务限流
限流降级的难点
限流降级的难点和关键还是在于整体技术栈的统一、以及后期对每个应用限流降级资源策略的准确把握和配置。
35 | 稳定性实践:开关和预案
如何理解开关和预案
开关:这个概念更多是业务和功能层面的,主要是针对单个功能的启用和停止进行控制,或者将功能状态在不同版本之间进行切换。
预案:可以理解为让应用或业务进入到某种特定状态的复杂方案执行,这个方案最终会通过开关、限流和降级策略这些细粒度的技术来实现,是这些具体技术方案的场景化表现。
技术解决方案
- 开关管理
- 开关推送
- 配置变更
- 预案执行
36 | 稳定性实践:全链路跟踪系统
阿里的鹰眼系统,美团点评的CAT分布式监控系统。
全链路跟踪系统在技术运营层面的应用
核心技术点:TraceID
技术运营场景:
第一个场景,问题定位和排查
第二个场景,服务运行状态分析
- 服务运行质量
- 应用和服务依赖
- 依赖关系的服务质量
第三个场景,业务全息
技术、产品和运营相辅相成,共同促进彼此的完善和成熟。
技术之外,我们也应该更多地考虑技术在价值方面的呈现。