跳到主要内容

介绍

稳定性的重要性

系统稳定性指系统在面对业务数据量增长或者各种意外事件时,仍能持续提供可靠服务的能力。这种能力对于企业、客户都是非常重要的,其价值主要体现在以下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 每周固定巡检
    • 需要有更充足的资源余量

引用