跳转到主要内容
Dan 提交于 13 December 2012

本章作者 Károly Négyesi

要定义“规模化”这个术语,让我们以一个小咖啡馆为例。当它刚开业的时候,因为小,店主料理一切事务:她负责点单、准备饮料、一手端上咖啡一手收钱。一段时间过后,咖啡馆生意变得好起来,店主因此雇了一个咖啡师和一个服务员。现在服务员负责点单和收钱,咖啡师拿到点单的纸条、准备饮料并端给顾客。在这里你应该注意到的是,当一个人来做每件事的时候,钱和饮料的交易是同时发生的。但是现在顾客是先付钱,最后才拿到饮料。在拿到饮料之前交钱,这其中是否包含某种风险呢?如果这时突然失火,顾客交的钱可能换不回来任何东西。然而,没有人真的会为这种可能性而担忧;为了更快得到咖啡,他们会愿意冒这么极小的一点风险。通过把“收钱”和“上咖啡”这两个动作分离开来,小店可以更快地服务更多的顾客。它可以雇佣任意人数的咖啡师和收银员以更好地满足客流。这就是规模化:用这样一种方式来容纳客流以致顾客较多的时候也不会减慢流程。

但是要注意的是,增加咖啡师并不会让付钱和拿到咖啡之间的时间有任何缩短。店主会确保始终有一位空闲的咖啡师,但你还是要等待他为你准备饮料。然而,如果店里雇佣狡猾的红色机器人来更快地制作咖啡,将有助于缩短这个等待时间。这就是性能:Web应用程序在接收一个请求到完成它之间的时间。

性能是重要的,因为人们容易放弃太慢的网站。规模化使得网站能应付大流量的情况,但规模化本身并不会让网站变快,让网站变快的是性能。然而,如果你有足够多的访客,即使是最快的网站,也最终不得不让某些访客等待,然后才能开始服务他们的请求。

现在我已经定义了规模化和性能,我将在本章的后续部分告诉你,为什么你应该关心他们。然后,我将讨论Drupal 7中的一些规模化可选方案。该讨论将主要集中在数据库这块,因为数据库对于Drupal规模化是整体上的。Drupal不总是可以随心所欲地规模化,但是我将要讨论到的更改能让Drupal的规模化更加高效。