2019-04-30

大型网站建设可伸缩性架构设计

返回

可伸缩性架构指的是:不改变网站的软硬件设计,只通过改变部署的服务器数量就可以扩大或缩小网站的服务处理能力。


大型网站都是从小型网站(一台廉价的 PC 服务器)开启自己的大型系统演化之路的。在这一过程中,最重要的技术手段就是使用服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。只要在技术上能够向集群中加入的服务器数量与集群的处理能力成线性关系,那么就可以利用这一手段不断提升自己的网站规模,这就是系统的伸缩性架构。

 

演化过程从总体上来说是渐进式的,网站的规模和服务器的规模总是在不断地扩大,即总是在。但也有可能因为运营的需要(促销活动),在某个短时间内,网站的访问量和交易规模突然爆发式增长,然后又回归正常状态。这就需要网站的技术架构具有极好的伸缩性——在活动期间向服务器集群中加入更多的服务器以满足用户的访问,活动结束后再将这些服务器下线,以节约成本。

 

1 设计伸缩性架构

 

网站架构发展史其实就是一部不断向网站添加服务器的历史。

 

伸缩性架构分为两种:


* 根据功能进行物理分离 - 不同服务器部署不同的服务。


* 单一功能通过集群实现 - 集群内的多台服务器部署相同的服务,提供相同的功能。

 

 根据功能进行物理分网站发展早期,总是从现有的服务器中分离出部分功能与服务的:每次分离都会有更多的服务器加入,这些新增的服务器被用于处理某种特定的服务。这种伸缩性手段可以用于网站发展的任何阶段,它可以分为两种情况:纵向分离与横向分离。


纵向分离(分层后分离):是将业务流程上的不同层进行分离部署。


横向分离(业务分割后的分离):把不同的业务模块分离部署。横向分离的粒度可以很小,比如一个关键网页可以独立部署为一个服务,专门部署。

 

单一功能集群部署


根据功能进行物理分离的模式下,随着网站访问量的增长,即使是分离到最小粒度的独立部署也可能无法满足业务规模的需要。这时就必须使用集群,即把相同的服务部署在多台服务器构成的集群上,实现整体对外服务。


当一头牛拉不动车时,不是去寻找一头更强壮的牛,而是用两头牛来拉车。一个服务的集群规模,需要同时考虑可用性、性能以及关联服务集群的影响。

 

2 伸缩性设计之应用服务器集群

 

把应用服务器设计为无状态模式,这样通过负载均衡服务器,就可以把用户请求转发到不同的应用服务器上咯:

 

负载均衡服务器能够感知或配置集群的服务器数量,这样就可以向新上线的服务器分发请求,并停止已下线的服务器,这样就实现了应用服务器集群的伸缩性。

 

负载均衡技术,不仅可以实现伸缩性,还能改善网站的可用性,所以是网站技术的杀手锏之一哦O(∩_∩)O~