SRE(Site Reliability Engineering)
Reliability 可靠性是一个多维度概念,涵盖了科学、技术、工程和应用的各个方面。
- 作为科学,可靠性探讨了“是什么”和“为什么”,它研究系统失败的原因和规律,以及如何通过理论模型来解释和预测这些现象。
- 作为技术,可靠性关注的是“怎么做”,它涉及开发和应用各种方法和工具来提高系统的性能和稳定性。
- 作为工程,可靠性追求的是“怎么做得既快速又经济、高效”,它强调在设计和制造过程中实现可靠性的最优化,以达到成本效益和性能的最佳平衡。
- 作为应用,可靠性解决的是“如何将理论应用于具体场景”,它指导实际产品和服务的设计,确保它们在现实世界中能够稳定、持续地满足用户需求。

通过这张全景图可以知道想要做好服务可靠性保障建设,我们需要重点关注三个问题。如何衡量服务的可靠性,指标体系是什么?应该重点考虑并建设哪些环节?支撑可靠性保障体系持续完善的几个要素是什么?
我们不仅要看结果指标,是否有故障,有异常;更要细化到每个层级去看系统指标。

两种 SLA 定义方式
实时性 SLA:这种定义侧重于服务的实时性能,通常用公式 1−丢失pv/总pv 来表示。这里,我们更关注 PV 丢失的数量,它包括网页丢失、5xx 错误等非正常返回的情况。
结果导向 SLA:这种定义通过最终的故障影响来衡量,例如,如果一个季度内没有发生任何故障,那么 SLA 为 100%。如果发生了一次故障,导致 100PV 的损失,那么可以把 SLA 定位为 1−100pv/总pv。如果第二次故障的损失为 200PV,那 SLA 更新为 1−100pv/总pv−200pv/总pv。
这两种定义方式并没有绝对的优劣之分,因为它们适用于不同的业务场景
但仅仅依赖结果指标来评估系统稳定性是不够的。这种做法可能会导致我们陷入一个误区:**如果一个系统在一段时间内没有进行任何变更,业务流量也保持平稳,表面上看似稳定,实际上可能隐藏着许多隐患。**这样的系统可能无法承受一次新的上线或流量的突然增加。关键问题可能无法被及时发现,从而导致潜在的风险和故障。
怎么做
六个关键组成部分,分别是监控、容量、变更、预案、备份,还有机制

感觉还缺少故障演练部分
如何让可靠性体系持续完善

首先,我们应当重视经验的积累与传承。在不同的业务领域、系统架构和应用场景中,定位逻辑往往存在显著差异。资深工程师与新手工程师在问题解决能力上的差异尤为明显。因此,我们的主要目标是将这些宝贵的经验沉淀下来。以系统监控为例,我们需要明确监控的设置方法,深入考虑监控的关键维度,确保监控系统能够全面、有效地反映系统运行状态。其次,我们需要关注工具和系统的重要性。工欲善其事,必先利其器,要提升系统的可靠性和保障能力,就必须依靠先进的工具和系统作为支撑。以系统监控为例,不同的监控工具在数据可视化、展示方式、数据丰富度以及操作便捷性等方面存在显著差异。一个优秀的监控系统能够显著提高故障检测的效率,从而快速响应并解决问题,确保业务的连续性和稳定性。第三,我们应重视数据和模型在服务可靠性中的核心作用。在人工智能技术日益普及的今天,服务的可靠性越来越依赖于算法和模型的支持。我们需要将传统的被动人工判断和决策转变为主动的机器判断和决策。通过持续地将经验转化为算法模型,我们可以使模型更加智能和强大,从而减少因个人经验差异导致的效率和准确性的差异,实现服务的高效和稳定。
