回顾网站架构发展历程,网站架构发展史就是一部不断向网站增加服务器的历史。只要工程师能向网站的服务器集群中增加新的机器,只要新增加的服务器能线性提高网站的整体服务处理能力,网站就无需为不断增长的用户和访问而焦虑。
一般说来,网站的伸缩性设计可分为两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的功能;后者是集群内的多台服务器部署相同的服务,提供相同的功能。本文重点阐述不同功能进行物理分离实现网站架构的伸缩性设计。
网站发展早期,通过增加服务器提高网站处理能力时,新增服务器总是从现有服务器中分离出部分功能和服务,如下图所示:
通过物理分离实现服务器伸缩
每次分离都会有更多的服务器加入网站,使用新增的服务器处理某种特定服务。事实上,通过物理上分离不同的网站功能,实现网站伸缩性的手段,不仅可以用在网站发展早期,而且可以在网站发展的任何阶段使用。具体又可分为如下两种情况。
纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性,如下图所示:
通过纵向分离部署实现系统伸缩性
横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性,如下图所示:
通过横向分离部署实现系统伸缩性
横向分离的粒度可以非常小,甚至可以一个关键网页部署一个独立服务,比如对于电商网站非常重要的产品详情页面,商铺页面,搜索列表页面,每个页面都可以独立部署,专门维护。