可伸缩架构(第2版):云环境下的高可用与风险管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

测量可用性

测量可用性对保证系统高可用非常重要。只有通过测量可用性,你才能了解应用程序当前的运行状况,以及检查可用性随时间发生的变化。

测量Web应用程序的可用性时,最常用的办法是计算用户可访问的时间百分比。我们可以通过以下公式来计算一段时间内的可用性:

网站可用性百分比=(该期间的总秒数-系统宕机的秒数)/该期间的总秒数

我们举一个示例来说明。假设在整个4月,你的网站宕机了两次,第一次宕机37分钟,第二次宕机15分钟。那么你的网站的可用性是多少呢?

从这个示例中可以看出,只要很短一段故障时间,就会对可用性百分比造成影响:

系统宕机的总秒数=(37+15)×60=3,120秒

该月份的总秒数=30天×86,400秒/天=2,592,000秒

网站可用性百分比=(该期间的总秒数-系统宕机的秒数)/该期间的总秒数

=(2,592,000秒-3,120秒)/2,592,000秒

网站可用性百分比=99.8795

因此,你的网站的可用性为99.8795%。

N个9

通常我们会用“N个9”来形容可用性。这是表示高可用性百分比的一个简化方式。表1-1列举了各个9的含义。具有“2个9”可用性的应用程序必须在99%的时间内可用。这意味着在一个月里,应用程序宕机432分钟仍然可以达到99%的可用性目标。相比之下,一个“4个9”的应用程序需要在99.99%的情况下都是可用的,这意味着它在一个月里只能宕机4分钟。

表1-1:N个9

从上面的示例中,我们可以看到前述网站的可用性百分比小于3个9(99.8795%,近似于99.9%)。对于一个要维持5个9的网站来说,每个月只能宕机26秒。

如果你希望系统是高可用的,那么什么样的可用性数值是合理的呢?对于这个问题,没有唯一的答案,因为这取决于你的网站、用户期望、业务需要以及业务期望。你需要自己来决定什么样的数字能够满足你的业务。

通常,对于简单的Web应用程序来说,3个9的高可用性是可接受的。通过表1-1可以看到,这表示每个月的故障时间不能超过43分钟。

计划中的故障也依然是故障

不要想当然地以为自己的网站是高可用的,计划中和日常维护工作所导致的系统不可用时间也要计算在可用性百分比之中。

我经常会听到这样的评论:“我们的应用程序从来也没有出现过故障,因为我们会经常性地进行系统维护。通过每周安排两个小时进行维护,我们保证了系统的高可用性。”

这真的能保证应用程序的可用性吗?让我们来计算一下。

网站可用性百分比=(该期间的总秒数-系统宕机的秒数)/该期间的总秒数

每周的小时数=7天×24小时=168小时

每周不可用的小时数=2小时

网站可用性(没有故障)=(168小时-2小时)/168小时=98.8%

网站可用性(没有故障)=98.8%

即使应用程序没有出现任何故障,至多也只能达到98.8%的可用性。这甚至低于2个9的标准(98.8%,与99%类似)。

计划中的维护和未预期的故障其实效果差不多。你的用户希望应用程序是可用的,一旦不可用,你的用户就会有负面的体验。他们不会关心你这是计划中的维护还是意外的故障。

通过数字来体现可用性

测量可用性对于保证系统高可用十分重要,不管是现在还是将来。本节讨论了测量可用性的常用方法,并提供了一些如何选择合理的可用性的建议。