网站的伸缩性架构
网站的伸缩性设计
不同功能进行物理分离实现伸缩
回顾网站架构发展历程,网站架构史就是一部不断向网站添加服务器的历史。只要工程师能向网站的服务器集群添加新的机器,只要添加新的服务器能线性提高网站的整体服务处理能力,网站就无需为不断增长的用户和访问而焦虑
单一功能通过集群规模实现伸缩
即使分离到最小粒度的独立部署,单一的服务器也不能满足业务规模的要求。因此必须使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛拉车。
应用服务器集群的伸缩性设计
- HTTP重定向负载均衡:利用HTTP重定向协议实现负载均衡。
- DNS域名解析负载均衡:利用DNS处理域名解析请求的同时进行负载均衡
- 反向代理负载均衡:利用反向代理服务器进行负载均衡
- IP负载均衡:在网络层通过修改请求目标地址进行负载均衡
- 数据链路层负载均衡:在通信协议的数据链路层修改mac地址进行负载均衡
分布式缓存集群的伸缩性设计
分布式缓存集群的访问模型
在网站业务中,大部分的业务数据读操作请求事实上是通过缓存获取的,只有少量读操作请求会访问数据库,因此数据库的负载能力是以有缓存为前提而设计的。
伸缩问题:新增缓存服务器导致大部分缓存失效
Tips: 现在业界使用Redis作为缓存也非常常见