什么是应用的可用性?

应用的可用性是指应用正常启动并运行的时间。

学习目标

阅读本文后,您将能够:

  • 描述应用的可用性,对比可用性与可靠性
  • 了解正常运行时间、停机时间和可用性级别
  • 介绍高可用性架构的组件

复制文章链接

什么是应用的可用性?

应用的可用性旨在衡量应用正常运行的时间。如果应用按预期正常运行且能够满足用户请求,则可用;如果应用无法运行或最终用户无法访问,则不可用。

对于 Web 应用而言,最大化其可用性是开发过程中的一个重要环节。可以通过综合运用后端基础设施优化、前端优化和攻击缓解,提高应用的可用性。

用户对 Web 应用的可用性抱有很高的期望。停机时间可能会对收入和声誉产生重大影响。想一想商店的“营业”时间:如果一家商店在意外的时段关闭,顾客就会去其他商店。同样地,如果用户无法从软件应用获得所需的服务,则会停止使用该应用,从而导致客户减少和收入损失。

对于企业对企业 (B2B) 应用而言,其可用性通常包含在服务级别协议 (SLA) 中,表示形式为应用预期启动并正常运行的时间百分比。在这种情况下,应用开发人员有义务按照合同为客户提供一定的可用性级别。

应用的可靠性与可用性

“可用性”概念适用于各种系统和服务,从服务器到应用再到 API。它以百分比来衡量:如果某个应用每小时关闭 36 秒,则其可用性为 99%。

可靠性则是指系统或应用在一段时间内,按预期交付服务而不出现错误的能力。如果某个应用运行缓慢或产生意外的、不正确结果,则该应用可能可用,但依然不可靠。回到前面的类比,不可用的商店关门了,而不可靠的商店照常营业,但其货架上的商品可能放错了位置。

计算应用的可用性级别

通常以日历年为单位进行计算,来衡量应用的可用性。下表显示了某个应用在 365 天的时间内,不同可用性级别对应的停机时间。(停机时间是累积的,可能发生在几个不同的时间段,也可能一次性发生。)

可用性 每年总停机时间
95% 18 天 6 小时
99% 3 天 15 小时 36 分钟
99.9% 8 小时 45 分钟 36 秒
99.99% 52 分钟 34 秒
99.999%(“五个九”) 5 分钟 15 秒

什么是正常运行时间?什么是停机时间?

正常运行时间是指应用按预期正常运行的时间。停机时间是指设备或服务无法正常运行的时间。在许多情况下,正常运行时间与可用性是同义词。

哪些因素会影响 Web 应用的可用性?

互联网比较复杂,很多因素都会影响 Web 应用的可用性和性能。其中一些因素在应用开发人员的控制范围之内,有些则不在。不过,开发人员可以采取一些步骤来处理和缓解可用性的影响因素。

  • 攻击:分布式拒绝服务 (DDoS) 攻击或机器人攻击可能会让应用不堪重负,导致其他用户无法使用服务,攻击方式是耗尽所有可用的带宽和计算能力,或者使应用完全崩溃。从内部破坏应用的攻击(例如勒索软件攻击SQL 注入攻击)也可能导致应用停止运行。
  • 基础设施故障:主机服务器速度变慢或崩溃,可能会导致应用不可用。服务器性能会因各种原因而下降,包括硬件故障、软件缺陷,以及请求数量突然激增。如果继续将请求发送到运行缓慢或出现故障的服务器,这些请求可能得不到响应。
  • 高流量或使用率:如果过多用户同时使用某个应用,它可能会不堪重负。例如,电子商务平台的使用率在产品发布、销售或购物季激增。而机器人流量可能会加剧这个问题。
  • 错误:应用软件中的错误可能会引发应用崩溃,从而导致应用不可用。
  • 客户端问题:前端的低效代码可能会导致用户设备或浏览器崩溃,或者导致兼容性问题。

什么是高可用性?

高可用性是指通过备份和避免单点故障,来实现的极高水平的持续可用性。在高可用性架构中,任何服务器、网关或服务发生故障都不会导致服务不可用。高可用性架构还必须能够防范网络攻击。

高可用性应用架构包含哪些组件?

负载均衡

负载平衡会在服务器组之间均匀分配计算负载和网络流量。这将确保任何一台服务器或一组服务器不会因超出其有效处理能力的流量而不堪重负。

有多种负载平衡算法:一些负载平衡器无论如何都会均匀分配工作负载,其他负载平衡器则会使用动态算法来响应实时网络状况和服务器状态。

运行状况检查

Web 服务器难免会时不时地宕机。运行状况检查是一项监测源服务器是否在线的服务。运行状况检查让负载平衡器能够响应服务器状态,如此一来便不会将请求定向到已断开连接的服务器。

冗余与备份

高可用性应用在其架构中配置了冗余。如果遭受勒索软件攻击或数据库因其他原因不可用,则此类应用可以恢复到应用数据的备份副本。冗余服务和服务器池可确保服务器或 API 崩溃不会影响应用的功能。

缓存

即使底层基础设施已经崩溃,内容交付网络 (CDN) 也可以为 Web 应用的静态元素提供服务。Web 应用的缓存版本可能不具备完整功能,但在恢复全面服务之前,从技术角度而言它仍然可用。(进一步了解 Cloudflare Always Online服务。)

可靠的 DNS

域名系统 (DNS) 让用户能够通过网络访问应用服务器。如果 DNS 服务器发生故障或无法找到正确的 IP 地址,用户无法加载应用。可靠的 DNS 提供商不仅业务范围遍布全球,而且能够阻止基于 DNS 的 DDoS 攻击,使用此类提供商可确保 DNS 不会影响应用的可用性。

监测应用的可用性

使用外部监控工具有助于服务提供商跟踪应用的可用性,并在应用发生故障时尽快做出响应。

什么是持续可用性?

持续可用性是一种计算基础设施设计的方法,确保应用或系统持续正常运行。持续可用性的目标是可用性达到 100%,但从实际角度来看,这不可能实现。虽然互联网的设计初衷是抵御核战争威胁,但对用户而言,互联网服务仍时有中断。尽管如此,持续可用性依然是一个值得追求的目标,有助于为用户提供尽量优质的服务。

Web 应用需要什么级别的可用性?

应用的可用性越高,支持该应用所需的资源就越多。换句话说,99.999% 的可用性可能代价高昂。开发人员必须判定自身或其客户对停机时间的容忍程度,然后据此进行构建。

幸运的是,Cloudflare 让高可用性架构对应用开发人员来说变得更为可行。负载平衡、缓存、Stream Delivery、DDoS 攻击缓解和机器人管理等功能均原生内置于 Cloudflare 服务。Cloudflare 甚至提供了一个开发人员平台,让开发人员能够构建新增功能或全新应用,这些应用可在覆盖世界各地 335 个城市的全球网络上运行。

了解 Cloudflare 如何维持应用可用