要实现一个典型的可扩展Web应用,有一大部分时间要花在Load balance, High availability, Consistent, Scalability等方面。这些都是有经验可循,但是通常无法简单重用。另外目前成熟的相关的部署经验都是孤立的,比如数据库,存储及文件系统,Web服务器都需要分别考虑。另外还有不少非核心的也经常需要用到,如cache, 全文检索, SSO、分布式计算如Hadoop等。所以大部分架构师的工作就是利用已有的经验,利用已有的硬件资源来对系统的负载进行一个平衡。
由于这些组合技术含量并不是特别高,而且也无大的新技术来替代,所以大部分网站架构设计师的工作和10年前没什么区别,而且更糟糕的是,这些重复工作无法避免。新的一个应用,由于数据库表设计改了,所以所有的工作又得重来一次。因此是改变现状的时候了。
最近,Google的Luiz André Barroso and Urs Hölzle写了一个paper, The Datacenter as a Computer – An Introduction to the Design of Warehouse-Scale Machines (PDF) 提出可以将一个Datacenter视为一台计算机。
目前的操作系统在管理单机资源方面已经做到了相当完善,但还没有简单易用的软件体系将一Datacenter中的资源合理分配及利用,WSC也许是一个方向。Paper中比较了在WSC中,使用各种资源Latency, Bandwidth, Capacity的区别。
因此,将来的程序可能会是这样,由几个简单的PHP组成, 运行在一个Datacenter上,使用的内存可大可小,可以从1M到100G;使用的存储可以无限,使用的数据库无需关心切分逻辑。程序员需要做的工 作,只需把PHP写好。其他的工作,通过一个Datacenter OS来完成。与Google AppEngine的区别是,这个OS是Open的。
作者在上述paper中呼吁计算机科学家应该加强WSC这一新兴领域的研究,因此如果把LAMP这一记组合拳及相关经验理解为网站架构设计的话,或许不久的几年之后,这一定义将重新改写。我的Google Reader里面有上百篇加星的有关LAMP架构经验的文章,那时,它们对于大部分架构设计师不再具有借鉴意义。
Google的paper最早是从The datacenter is the new mainframe和The Datacenter as a computer看到的。