介绍
稳定性的重要性
系统稳定性指系统在面对业务数据量增长或者各种意外事件时,仍能持续提供可靠服务的能力。这种能力对于企业、客户都是非常重要的,其价值主要体现在以下7个方面[1]:
用户满意度:稳定的系统能够提供更好的用户体验,减少服务中断、加载延迟或崩溃等问题,提高用户满意度。
业务连续性:如果系统频繁崩溃或不可用,业务操作将受影响,导致业务中断,损失收入和客户。系统稳定性能够保证业务的连续性。
数据保护:系统不稳定可能导致数据丢失或泄漏,对业务造成严重损害。稳定的系统能够有效保护数据的完整性、可用性和保密性。
企业声誉:稳定的系统代表着专业和可信赖的形象。企业在客户和合作伙伴中建立良好的声誉,有助于增强市场竞争力。
效率和生产力:稳定的系统意味着员工能够无缝地执行任务,不必花费时间应对系统故障。高稳定性的系统,能够提高工作效率和生产力,减少工作中断。
成本控制:不稳定的系统可能需要投入大量的人力、时间和资源,稳定的系统减少了资源投入,降低了企业的维护成本。
业务增长:稳定的系统为业务增长创造了条件。企业可以专注于业务拓展,而不必过多担心系统稳定性问题。
因此保障系统的稳定性,是我们最重要的工作。
怎么定义稳定性
要想保障服务的稳定性,我们需要一种统计方式定义系统是否稳定。目前业界有两种衡量系统可用性的方式,一个是时间维度,一个是请求维度,我们先来看这两个维度的计算公式[2]。
时间维度 :Availability = Uptime / (Uptime + Downtime)
请求维度: Availability = Successful request / Total request 这两个维度计算公式运用在实际业务中,可以变为以下的描述
时间维度:服务可用性 =(1 - 服务月度不可用时间(分钟数) / 服务月度总时间(分钟数))x 100%
请求维度:服务可用性 =(当天总请求数 - 当天 5xx 请求数 / 当天总请求数)x 100% 我们可以根据以上的计算方式,计算出我们系统可用性的对照表
系统可用性 | 故障时间/年 | 故障时间/天 |
---|---|---|
90% | 36.5天 | 2.4小时 |
99% | 3.65天 | 14.4分 |
99.9% | 8.76小时 | 1.44分 |
99.99% | 52.56分钟 | 8.66秒 |
99.999% | 5.26分钟 | 0.87秒 |
如何保障稳定性
后面我们会根据不同维度讲解稳定性
- 代码设计
- 报文大小
- 缓存
- 超时
- 重试
- 部署架构
- k8s
- 服务发现
- 优雅关闭
- 动态扩容
- 中间件
- 运行观测
- 隔离
- 连接池
- Time Wait
- Prometheus
- 5XX
- Error
- 巡查系统
- 5xx
- 故障恢复
- 必要条件
- 需要建设或接入客户的服务观测平台
- 需要更多系统及平台的权限
- 需要石墨侧提供专职 SRE,时刻应对生产环境各类潜在风险
- 需要 SRE 每周固定巡检
- 需要有更充足的资源余量