可靠/可用性介绍

article/2025/10/13 7:57:34

可靠/可用性主要目的是保护业务零中断和高用户体验。

可靠可用性基本概念

广义的可靠性(Reliability)由三个部分组成:可靠性(Reliability)、可维修性(Maintainability)和可用性(Avaliability)。其中狭义的可靠性是指产品在规定的条件和时间内完成规定功能的能力,它的概率度量称为可靠性。可维修性是指产品在规定的条件和时间内,按规定的程序和方法维修时,保持和恢复到规定状态的能力。可用性是指产品在任意随机时刻需要和开始执行任务时,处于可工作或使用的状态,它的概率度量称为可用性。

衡量指标

接下来介绍用哪些指标度量可靠性、可维修性和可用性。需要说明的是,由于故障可分为"可修复"和"不可修复",而不同的故障类型,其可靠性、可维修性和可用性指标不相同。对于不可修复故障,讨论其可维修性没有意义,因为一旦出现故障,其处理策略是使用新的产品进行替换。对应的其可靠性也变成该产品的寿命,其可靠性就是可用性。对于软件来说,一旦软件产品出现故障,这时软件开发人员就充当维修人员,对软件问题进行修复。注意,讨论软件产品的可靠/可用性时,并不考虑其依赖硬件的可靠/可用性。

平均故障间隔时间

平均故障间隔时间(Mean Time Between Failure, MTBF),顾名思义,是指相邻两次故障之间的平均工作时间,是衡量一个产品的可靠性指标。 接下来就用wiki上一张经典的图来说明平均故障间隔时间。
请添加图片描述
从上图可以看出,平均故障间隔时间就是多个故障间隔时间的平均值,而一次故障间隔时间则上图down time - up time的差值。

平均故障修复时间

平均故障修复时间(Mean Time To Recover, MTTR),顾名思义,是指产品由故障状态转为工作状态时修理时间的平均值。在工程学,MTTR是衡量产品可维修性的值,在维护合约里很常见,并以之作为服务收费的准则。MTTR就是从故障发生到故障修复这段时间。这个时间段包括故障发现时间、故障定位时间、故障修复时间。对云原生应用来说,可将MTTR继续分解为如何快速发现(监控设计)、如何快速定位(问题定位设计,例如日志收集、全链路跟踪)、如何快速恢复(例如倒换、降级)。
下面给出业内对软件MTTR的估算:
请添加图片描述
对于云原生应用来说,如果出现业务问题,需要回滚,如果需要在线下载容器镜像,则应确保可在10min内恢复,如果不需要下载容器镜像,则应确保可在30s内恢复。

可用度

GB/T3187-97对可用性的定义如下:在要求的外部资源得到保证的前提下,产品在规定的条件下和规定的时刻或时间区间内处于可执行规定功能状态的能力。可用性是产品可靠性、可维修性和维修保障性的综合反映。 其计算公式如下:
A v a i l a b i l i t y = M T B F / ( M T B F + M T T R ) Availability = MTBF / (MTBF + MTTR) Availability=MTBF/(MTBF+MTTR)

关于可用性的计算公式,这里不多做解释。通常大家习惯用N个9来表征系统可用性,比如99.9%(3-nines availability),99.999%(5-nines availability)。这和接下来介绍的停机时间密切相关。

宕机时间和可用性

宕机时间(Down Time, DT)是指机器出现故障的停机时间。使用每年的宕机时间来衡量系统可用性,更符合直觉,更容易理解。计算公式如下:
D T = ( 1 − A ) ∗ 365 ∗ 24 ∗ 60 ( 分钟 / 年 ) DT = (1 - A) * 365 * 24 * 60 (分钟/年) DT=(1A)3652460(分钟/)
这里给出宕机时间和可用性的常见情况:
请添加图片描述
可见,如果需要达到5个9的可用性,一年至多有5min的停机时间,这个时间难度是极大的,也是业内衡量软件质量高低的一个门槛。至于其他场景的可用性,则根据业务的不同,有不同的要求。

可靠/可用性设计

冗余设计

冗余设计,又称余度设计,是提升系统可用性的常用技术。
冗余设计按照副本的职责,主要分为两类:主动冗余、被动冗余。主动冗余是指内部的所有节点都处于正常状态,所有的节点没有主备之分。被动冗余是指当主节点故障之后,备用节点接管并处理故障单元的任务。主动冗余的场景有负荷分担、资源池,被动冗余的场景有热备份、冷备份。
影响冗余的因素除了节点自身的失效率和修复率之外,还与节点的故障管理能力密切相关,包括故障检测率、倒换成功率等。一般通过可靠性建模(RDB(Reliability Block Diagram)/Markov)来分析影响冗余的关键因素。
冗余设计是系统可用性常用的技术。对云服务的冗余设计主要通过多实例、反亲和部署等技术手段实现。
冗余设计的核心要点:冗余节点要相互独立,避免共因故障。
冗余保护需避免频繁倒换和联动倒换。

容灾设计

容灾指在相隔较远的异地,建立两套或多套功能相同的系统,当灾难(含人为操作破坏、自然灾害、设备故障)发生时,由异地容灾系统接管业务,实现业务不中断、关键业务数据不丢失的目标。衡量容灾系统的主要指标有:
RPO(Recovery Point Objective), 代表当灾难发生时,允许丢失的数据量。
RTO(Recovery Time Objective),代表系统业务恢复的时间。
RPO与RTO越小,系统的可用性就越高,用户的投资也越大。
目前成熟的容灾方案是两地三中心。对于云服务来说,其容灾方法一般可分为跨Region容灾方案、跨AZ容灾方案。

故障管理

故障管理是指通过对系统中存在的故障检测采取确认、定位/处理、恢复、故障复盘、故障任务跟踪等措施,消除或减轻故障对系统功能的影响,从而达到系统容错、提高系统可靠性的目的。
请添加图片描述

过载控制设计

过载指系统的并发输入超过系统的额定容量,从而导致系统不能提供及时服务的一种状态。通常用实际业务请求数据和额定规格业务请求数的比值来描述,如3倍负载、10倍负载、30倍负载。
过载控制(也指流控)指系统处于过载状态时,通过流控、降级、熔断、隔离、弹性伸缩等手段,使系统保证部分或者全部额定容量的业务成功处理的控制过程。
对于云服务来说,先弹性扩容、然后服务降级、最后才考虑业务丢弃。

升级不中断设计

升级不中断指升级期间业务数据中断时间用户无感知,已经建立的业务连接不中断,正在建立的业务可丢弃,新业务能够在N秒内接入。
云服务通常采用蓝绿发布、灰度发布(金丝雀发布)等机制,来降低软件升级带来的业务中断及对商用用户的影响。灰度发布的主要目的是为了避免出现批次升级导致大规模故障,且异常恢复时间较长的场景。灰度发布要求系统需具备新老版本同时运行的能力,并且支持按照不同类型的用户,按比例逐步把用户从老版本切换迁移到新版本。在迁移过程中实时监控用户业务使用状态,如果发现业务异常,用户可随时切换回老版本。
(1) 蓝绿发布
通过部署两套环境来解决新老版本的发布问题。如果新版本(New Version)发生问题要进行回滚的时候,直接通过切流将流量全部切到老版本(Old Version)上。
请添加图片描述
蓝绿发布的优点是升级切换和回退比发布回滚迅速,但蓝绿发布成本较高,需要部署两套环境。如果新版本中基础服务出现问题,会瞬间影响全网用户;如果新版本有问题也会影响全网用户。
(2) 金丝雀发布
金丝雀发布要求系统需具备新老版本同时运行的能力,并且支持按照不同类型的用户,按比例逐步把用户从老版本迁移到新版本。在迁移的过程中,如果发现业务异常,用户可随时切换回老版本。
请添加图片描述
金丝雀发布可以按照流量或具体的内容进行灰度(比如不同账号,不同参数),出现问题不会影响全网用户,但是金丝雀发布因为没有覆盖到所有的用户导致出现问题不好排查。

可靠/可用性测试

故障注入测试(Fault Injection Test, FIT),通常指向系统注入在实际应用中可能发生的故障,观察系统功能性能变化,故障检测、定位、隔离以及故障恢复情况,发现产品缺陷、评估系统可靠性的测试方法。

故障注入测试目的

(1) 可靠性增长,测试发现问题并修复,提高系统可靠性。
(2) 验证系统可靠性,验证系统的故障管理能力。
(3) 对产品故障恢复能力定量评估。

参考

https://www.pianshen.com/article/47451556182/ 如何理解“可靠性”和“可用性”?
https://blog.csdn.net/yunhua_lee/article/details/121674703 MTTR、MTBF、MTTF、可用性、可靠性
https://zh.wikipedia.org/wiki/平均故障間隔 平均故障间隔
https://blog.csdn.net/weixin_44648216/article/details/117913305 可用性和可靠性
https://blog.csdn.net/zouhui1003it/article/details/109541840 互联网产品线上故障管理规范
https://developer.aliyun.com/article/747091 金丝雀发布


http://chatgpt.dhexx.cn/article/ZnCilUQZ.shtml

相关文章

软件测试可用性常用指标

网站可用性 所谓网站可用性(availability)也即网站正常运行时间的百分比,业界用 N 个9 来量化可用性, 最常说的就是类似 “4个9(也就是99.99%)” 的可用性。 描述通俗叫法可用性级别年度停机时间基本可用性2个999%87.6小时较高可用性3个999.9%8.8小时具…

服务器系统可用性99.9,可用性99.9

可用性99.9 内容精选 换一换 云数据库 RDS服务支持切换主备实例的可用性策略,以满足不同业务需求。可选择 “可靠性优先”或者“可用性优先”两种策略。调用接口前,您需要了解API 认证鉴权。该接口仅支持MySQL引擎。仅支持主备实例,即:HA实例。实例在创建、数据库升级、创建…

软件设计中的可用性和可用性测试

什么是可用性 在创建软件的环境中,术语“可用性”表示一种方法,它将用户而不是系统摆在过程的中心。这一方法称作以用户为中心的设计,它从设计过程的一开始就将用户关心的问题和意见考虑在内,并提出在任何设计决策中用户的需要都应…

谈一谈软件系统的可用性

什么是可用性 系统的可用性用如下公式表示: 其中: MTBF:即平均无故障工作时间,英文全称是“Mean Time Between Failure”。是衡量一个产品(尤其是电器产品)的可靠性指标。单位为毫秒、秒钟、分钟、小时等…

功能测试 性能测试 可用性_6种可改善软件的可用性测试方法

功能测试 性能测试 可用性 Collette Stumpf是Surge的软件设计师。 成功的软件项目请客户,简化流程或以其他方式为您的业务增值。 但是,如何确保您的软件项目能够带来预期的改进? 用户会体验到更好的性能吗? 所有任务的生产率都会…

漫谈软件架构设计系列(一):可用性设计

作者:中国移动云能力中心 —— 胡建华 概要:高可用设计师应用软件架构设计的最基本要求,无论一个产品处于初创阶段还是快速增长期,作为一款商业软件面向用户提供服务,那么可用性的设计是必须予以考虑的。 一、基本概…

什么是服务器?服务器是干什么用的?

服务器 摘要: 服务器相信很多电脑爱好者都听过或者了解一些,一般我们很难看到真正的服务器,因为服务器一般均放置在机房重点,闲人一般均是免进的。比如我们每天浏览的网站、玩的游戏等,所有的数据均存在服务器&#x…

网络服务器是干什么用的

关于网络服务器介绍 定义 有时,这两种定义会引起混淆,如web服务器。 它可能是指用于网站的计算机,也可能是指像apache这样的软件,运行在这样的计算机上以管理网页组件和回应网页浏览器的请求。 服务器 服务器作为硬件来说&…

客户端与服务器

1.客户端与服务器 1.1 客户端 在前端开发中,客户端特指“Web 浏览器”。实际开发中,只要可以访问服务器的一端都属于客户端(手机、平板、电脑中的各种软件都可以是客户端)。 1.2 服务器 概念:服务器是提供服务的设备…

服务器是什么?它是用来干什么的?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、服务器是什么? 二、服务器的作用 1、提高访问速度 2、提高安全性 三、云服务器与物理服务器 1、云服务器 云服务…

什么是伺服器

服务器/伺服器(server)是一种计算机,用于处理请求并通过 Internet 或本地网络将数据传送到另一台计算机。 大多数人将“服务器”一词理解为网络服务器,其中可以通过诸如网络浏览器之类的客户端在因特网上访问网页。但是&#xff0…

服务器的概念

第一次听到服务器的时候,脑子里的第一个想法就是,这个就是给计算机服务的东西吧,然而自己也是没有真的了解服务器的含义,总有点模棱两可的感觉,今天就找了一些关于服务器的资料,进一步的连接服务器。 服务…

服务器基本概念

服务器基本概念 服务器的前世今生 计算机分为64位和32位,64位为主流的计算方式,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。 服务器发展史: 大型机小型机X86服务器(工业标准服务器&a…

服务器是什么?

一.服务器是什么? 服务器是计算机的一种,它比普通计算机运行快、负或事高,价格。服务器网络中为其客户机(如PC机、智能手机、ATM等经端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力长时间的可靠运行、强大的1/O外部数…

何谓服务器(Server) ?

何谓服务器(Server) ? 定义 1.一个管理资源并为使用者提供服务的电脑软件,通常分为档案服务器(能使使用者在其它电脑存取档案),资料库服务器和应用程式服务器。 2.执行以上软件的电脑。 有时,这两种定义会引起混淆&am…

【WEB服务器】什么是WEB服务器

一、概述 Web服务器一般指的是“网站服务器”,是某种驻留在因特网上的计算机程序,可以向请求终端提供服务,主要功能时存储、处理和传递网页给“客户”,传递内容一般是HTML文档、图像、样式表或脚本等,也可以放置网站文…

服务器是干什么用的?

首先,什么是服务器?服务器是提供计算服务器和网络服务的设备。服务器和计算机由CPU、硬盘、内存、系统总线等组成。比如我们访问一个网站,点击这个网站会发出访问请求,服务器会响应服务请求,进行相应的处理&#xff0c…

什么叫做服务器

服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。 服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似…

什么是服务器?(Powercert animated videos)

什么是服务器? 本篇文章是源自以下链接视频的字幕: 什么是服务器?(Powercert animated videos) 服务器本质上是一个用于为用户提供服务的专用电脑,比如一个普通的桌面电脑或者是一个工作站,所以服务器是一台许多用户…

服务器简介

1、什么是服务器? 【服务器】: 也称伺服器,是一种高性能计算机,提供计算服务的设备。 2、服务器的构成 服务器:由处理器(CPU)、硬盘、内存、系统总线等组成,和通用的计算机架构类似。由于服务…