应用的可用性是指应用正常启动并运行的时间。
复制文章链接
应用的可用性旨在衡量应用正常运行的时间。如果应用按预期正常运行且能够满足用户请求,则可用;如果应用无法运行或最终用户无法访问,则不可用。
对于 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 服务器难免会时不时地宕机。运行状况检查是一项监测源服务器是否在线的服务。运行状况检查让负载平衡器能够响应服务器状态,如此一来便不会将请求定向到已断开连接的服务器。
高可用性应用在其架构中配置了冗余。如果遭受勒索软件攻击或数据库因其他原因不可用,则此类应用可以恢复到应用数据的备份副本。冗余服务和服务器池可确保服务器或 API 崩溃不会影响应用的功能。
即使底层基础设施已经崩溃,内容交付网络 (CDN) 也可以为 Web 应用的静态元素提供服务。Web 应用的缓存版本可能不具备完整功能,但在恢复全面服务之前,从技术角度而言它仍然可用。(进一步了解 Cloudflare Always Online服务。)
域名系统 (DNS) 让用户能够通过网络访问应用服务器。如果 DNS 服务器发生故障或无法找到正确的 IP 地址,用户无法加载应用。可靠的 DNS 提供商不仅业务范围遍布全球,而且能够阻止基于 DNS 的 DDoS 攻击,使用此类提供商可确保 DNS 不会影响应用的可用性。
使用外部监控工具有助于服务提供商跟踪应用的可用性,并在应用发生故障时尽快做出响应。
持续可用性是一种计算基础设施设计的方法,确保应用或系统持续正常运行。持续可用性的目标是可用性达到 100%,但从实际角度来看,这不可能实现。虽然互联网的设计初衷是抵御核战争威胁,但对用户而言,互联网服务仍时有中断。尽管如此,持续可用性依然是一个值得追求的目标,有助于为用户提供尽量优质的服务。
应用的可用性越高,支持该应用所需的资源就越多。换句话说,99.999% 的可用性可能代价高昂。开发人员必须判定自身或其客户对停机时间的容忍程度,然后据此进行构建。
幸运的是,Cloudflare 让高可用性架构对应用开发人员来说变得更为可行。负载平衡、缓存、Stream Delivery、DDoS 攻击缓解和机器人管理等功能均原生内置于 Cloudflare 服务。Cloudflare 甚至提供了一个开发人员平台,让开发人员能够构建新增功能或全新应用,这些应用可在覆盖世界各地 335 个城市的全球网络上运行。
了解 Cloudflare 如何维持应用可用。