开篇
SLA(service-level agreement,即 服务级别协议)也称服务等级协议,经常被用来衡量服务稳定性指标。业界高可用的标准是按照系统宕机时间来衡量的,通常被称作“几个 9”,9 越多代表服务全年可用时间越长,服务也就越可靠,即停机时间越短。通常作为服务提供商与受服务用户之间具体达成承诺的服务指标。
一、稳定性建设是什么
简单理解,系统稳定性本质上是系统的确定性应答。
从另一个角度解释。稳定性建设的目标是尽可能的保证SLA.
二、为什么要做稳定性建设
稳定性有多重要,我们来看几个由于服务稳定性故障造成影响的案例:
- 2023年11月12日阿里全线故障,用户订外卖,网购均受影响,阿里云信任危机。
- 滴滴2023年11月27日夜间发生故障,给广大用户造成不便,公司经济损失且补发优惠券。
服务稳定性对于企业来说非常重要,不仅仅会对企业带来直接的经济损失,甚至会对行业、人们的生活造成非常严重的影响。所以说服务稳定性建设的意义非常重大。
三、影响稳定性的因素
- 人为因素
不合理的变更(50%)、意识问题、外部攻击等等
- 软件因素
系统依赖、架构设计问题、代码bug、设计漏洞、GC问题、线程池异常
- 硬件因素
网络故障、机器故障、DB等中间件问题
下面就是对症下药,首先是故障前的预防,其次是故障后的快速恢复能力,下面我们就聊聊几种常见的解决思路。
四、怎么做稳定性建设
稳定性建设4大抓手
降发生
从开发阶段开始,到最后的代码上线,这整个过程中,对各个阶段进行质量把控,将所有异常排除在发生之前
提感知
故障在所难免,所以一定要做到,一旦发生故障,能够及时且精准的告警!
快响应
在接到异常告警之后,能够快速响应、快速定位、快速止损,不要总想着这是谁的锅、如何解决问题,一定要先止损
做复盘
解决了故障,也一定要复盘,为了避免以后再次出现此类事故
知识沉淀到经验库里面
产生故障的原因。
3+1保障
良好的系统架构和实现
完备的团队研发运维流程机制
技术同学良好的意识和能力
良好的研发项目管理
监控 容灾 降级 服务治理
四、总结
1、一个好的软件架构,应该遵循高性能、高可用、易扩展 3 大原则,其中「高可用」在系统规模变得越来越大时,变得尤为重要。
2、对于一个动态演进的系统而言,我们没有办法将故障发生的概率降为0,预防和缩短故障的恢复时间才是我们追求的目标。
3、适合的才是最好的。提升稳定性的同时,维护成本、机器成本等也会跟着上涨,我们也不用一味的追求可用性,需要结合系统的业务SLA要求权衡。
如何做好稳定性和高可用保障是一个很庞大的命题,本篇文章没有太多的深入细节,只聊了整体的一些思路,主要是为了大家在以后的系统高可用建设过程中,有一套系统的框架可以参考