网站伸缩性值得是不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数据就可以扩大或者缩小网站的服务处理能力。
6.1 网站架构的伸缩性设计
一般来说,网站伸缩性设计可分为两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。
6.1.1 不同功能进行物理实现伸缩
6.1.2 单一功能通过集群规模实现伸缩
单一服务器分离已经不足以支撑了,达到一定规模后,就需要用集群。
6.2 应用服务器集群的伸缩设计
6.2.1 HTTP重定向负载均衡
根据用户的http请求计算一台web服务地址。
6.2.2 DNS 域名解析负载均衡
6.2.3 反向代理负载均衡
6.2.4 IP负载均衡
6.2.6 负载均衡算法
负载均衡服务器的实现可以分成两个部分:
1、根据负载均衡算法和web服务器列表计算得到一个web服务器地址
2、将请求发送到该地址web服务器上
有以下选择:
- 轮询(round robin RR) 所有请求依次分发到每台应用服务器上
- 加权轮询(根据服务器不同配置来优先分配)
- 随机分配
- 最少链接,记录每个服务器正处理的连接数, 将新的链接分发到最少链接服务器上。
- 原地址散列(哈希)来自同一个ip的请求上下文信息都在同一个周期内重复使用。
6.3 分布式缓存集群伸缩的设计
6.3.1 Memcached 分布式缓存集群访问模型
6.3.2 Memcached分布式缓存集群的伸缩性挑战
6.3.3 分布式缓存的一致性hash算法
6.4 数据存储服务器集群的伸缩设计
6.4.1 关系数据库集群的伸缩设计
跨库得表不能join操作。
cobar如何做集群伸缩的呢?