网站架构的伸缩性设计
网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过增减部署的服务器数量就可以扩大或缩小网站的服务处理能力。这样就可以做到通过不断简单地向集群中添加服务器来增强整个集群的能力。
一般说来,网站的伸缩性设计可分为两类,一类是根据功能进行物理分离是实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的功能;后者是集群内的多台服务器部署相同的服务,提供相同的功能。
不同功能进行物理分离实现伸缩
使用新增的服务器处理某种特定服务,通过物理上分离不同的功能,实现网站伸缩。
具体又可分为如下两种情况:
纵向分离(垂直分割):将业务处理流程上的不同部分分离部署,实现系统伸缩性。
横向分离(功能分割):将不同的业务模块分离部署,实现系统伸缩性。
单一功能通过集群实现伸缩
将不同功能分离部署可以实现一定程度的伸缩性,但是随着网站并发访问逐步增加,单一的功能独立部署在独立的服务器上也不能满足业务规模的要求。因此必须使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。
集群伸缩又具体可分为应用服务器集群伸缩性和数据服务器伸缩性,技术实现差别很大。而数据服务器集群也可分为缓存数据服务器集群和存储数据服务器集群,其伸缩性设计也很不一样。
应用服务器集群的伸缩性设计
在构建高可用的架构时曾提到,应用服务器应该设计成无状态的,即应用服务器不存储请求上下文信息,这样每次用户请求可以由任意一台服务器处理,而不会影响结果。
如果HTTP请求分发装置可以感知或配置集群的服务器数量,及时发现集群中新上线或下线的服务器,并分发请求,就实现了应用服务器集群的伸缩性。
这里,这个HTTP请求分发装置被称为负载均衡服务器。
负载均衡是网站必不可少的基础技术手段,不但可以实现网站的伸缩性,同时还可改善网站的可用性,
HTTP重定向负载均衡
使用HTTP重定向协议实现负载均衡。
HTTP重定向服务器是一台普通的应用服务器,功能是更具用户的HTTP请求计算一台真实的Web服务器地址,并使浏览器重定向到该服务器。