所谓网站的伸缩性是指不需要改变网站的软硬件设计,仅通过改变部署的服务器数量就可以扩大或缩小网站的服务处理能力。
1.网站架构的伸缩性设计
网站的伸缩性设计分为两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同服务器部署不同的服务,提供不同的功能;后者是集群内的服务器部署相同的任务,提供相同的功能。
1.1不同功能进行物理分离实现伸缩
分层后分离(横向分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性。
业务分割后分离(纵向分离):将不同的业务模块分离部署。
1.2单一功能通过集群规模实现伸缩
将相同服务部署在多台服务器上构成一个集群整体对外提供服务。集群伸缩性又可以分为应用服务器集群伸缩性和数据服务器集群伸缩性。
2.应用服务器集群的伸缩性设计
实现负载均衡的基础技术主要包括以下几种:
2.1HTTP重定向负载均衡
HTTP重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的HTTP请求计算一台真实的Web服务器地址,并将Web服务器地址写入HTTP重定向相应中(响应状态码为302)返回给浏览器。这种负载均衡方案的优点是比较简单。缺点是浏览器需要发送两次请求服务才能完成一次访问性能较差;重定向服务器自身的处理能力有限可能成为性能瓶颈,整个集群的伸缩性规模有限;使用HTTP302响应码重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。
2.2DNS域名解析负载均衡
利用DNS处理域名解析请求的同时进行负载均衡处理的一种方案。
每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样A记录中配置的多个服务器就构成了一个集群,并可以实现负载均衡。
2.3反向代理负载均衡
反向代理服务器处于Web服务器前端,管理一组Web服务器,将请求根据负载均衡算法转发到不同的Web服务器上。Web服务器处理完成的响应也需要通过反向代理服务器返回给用户。由于Web服务器不直接对外提供服务,因此Web服务器不需要使用外部IP地址,而反向代理服务器则需要配置双网卡和内部外部两套IP地址。
由于反向代理服务器转发请求在HTTP协议层面,因此也叫应用层负载均衡。其优点是和反向代理服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和相应的中转站,其性能会成为瓶颈。
2.4IP负载均衡
在网络层通过修改请求目标地址进行负载均衡。
2.5数据链路层负载均衡
数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡
2.6负载均衡算法