伸缩性:指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。
一、伸缩性设计
1、不同功能进行物理分离实现伸缩
(1)纵向分离(分层后分离):将业务处理流程上的不同部分分离部署,实现系统伸缩性。
(2)横向分离(业务分割后分离):将不同的业务模块分离部署,实现系统伸缩性。
2、单一功能通过集群规模实现伸缩
二、应用服务器集群的伸缩性设计
1、HTTP重定向负载均衡
优点:比较简单
缺点:浏览器需要两次请求服务器才能完成一次访问,性能较差
2、DNS域名解析负载均衡
3、反向代理负载均衡(应用层负载均衡)-HTTP协议层
4、IP负载均衡
5、数据链路层负载均衡
6、负载均衡算法
(1)轮询(Round Robin ,RR)
(2)加权轮询(Weighed Round Robin,WRR)
根据 应用服务器硬件性能的情况,在轮询的基础上,按照配置的权重将请求分发到每个服务器,高性能服务器能分配更多的请求。
(3)随机(Random)
(4)最少连接(Least Connections)
(5)源地址散列(Source Hashing)
三、分布式缓存集群的伸缩性设计
1、Memcached分布式缓存集群的访问模型
2、Memcached分布式缓存集群的伸缩性挑战
3、分布式缓存的一致性哈希算法():一台物理服务器虚拟节点参考值150
四、数据存储服务器集群的伸缩性设计
1、关系数据集群的伸缩性设计:主从复制,数据分库,分表分库
2、Nosql数据库的伸缩性设计