没有高可用性,就没有可伸缩性。
可靠性一般指一个系统的质量。通常来说,它意味着一个系统能够按照技术标准持续运行的能力。如果一个软件通过了所有的测试套件,并且基本完成了它应该做到的事情,那么我们可以说它是可靠的。
可用性一般指系统在其能力范围内执行任务的能力。系统是否运转正常?是否可以操作?是否可以响应?如果答案是“是”,那么系统就是可用的。
可用性和可靠性非常相似。如果系统不可靠,它也很难是可用的,如果它不可用,也很难是可靠的。
一个计算 2 + 3 却得到结果 6 的系统,其可靠性很低。一个计算 2 + 3 却永远不返回结果的系统,其可用性很低。可靠性问题通常可以通过测试来修复,而可用性问题通常较难解决。
你会因为在系统中引入了一个 bug,导致计算 2 + 3 得到了 6。这通过测试套件可以很容易发现并修复。但是,假设你的应用程序可以很可靠地计算 2 + 3 = 5。现在假设它运行在一个网络连接不好的计算机上,结果如何?有时它可能返回 5,有时它可能什么都不返回。这时候,应用程序是可靠的,但它不是可用的。
测量 Web 应用程序的可用性时,最常用的办法是计算用户可访问的时间百分比。
通常我们会用“N 个 9”来形容可用性。具有“2 个 9”可用性的应用程序必须在 99% 的时间内可用,这意味着在一个月里,应用程序宕机 432 分钟仍然可以达到 99% 的可用性目标。相比之下,一个“4 个 9”的应用程序需要在 99.99% 的情况下都是可用的,这意味着它在一个月里只能宕机 4 分钟。
2 个 9(99%)
432 分钟
3 个 9(99.9%)
43 分钟
4 个 9(99.99%)
4 分钟
5 个 9(99.999%)
26 秒
6 个 9(99.9999%)
2.6 秒