大型网站核心架构中的"高伸缩性"设计方法
什么是伸缩性
所谓伸缩性:指通过不断向集群中加入服务器的手段,来缓解不断上升的用户并发访问压力和不断增加的数据存储需求;
衡量好坏的标准
- 是否可以用多台服务器构建集群
- 是否容易向集群中添加新的服务器
- 加入新的服务器后是否可以提供和原来的服务器无差别的服务
- 急群众可容纳的总的服务器数量是否有限制
对于应用服务器集群
只要服务上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向急群众不断加入服务器
对于缓存服务器集群
需要改进缓存路由算法保证缓存数据的可访问性
- 加入新的服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问;
- 虽然缓存的数据可以通过数据库重新加载,但是如果应用已经验证依赖缓存,可能会导致整个网站崩溃
数据库
分为关系型数据和非关系数据库
关系数据库
虽然支持数据复制,主从热备机制,但是很难做到大规模集群的可伸缩性,因为关系数据库的集群伸缩性方案必须在数据之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群
NoSQL 数据库
由于先天就是为海量数据而生的,因为伸缩性支持都不错,可以做到较少运维参与的情况下实现集群规模的线性伸缩;