天天看点

大型网站技术架构——读后摘要6

网站的伸缩性架构

网站架构的伸缩性设计

1.不同功能进行物理分离实现伸缩
大型网站技术架构——读后摘要6

每次分离都会有新的服务器加入网站来处理特定服务。

再细化:

  • 纵向分离:将业务流程上不同部分分离部署实现系统伸缩性。
  • 横向分离:将不同的业务模块分离部署,实现伸缩性。
2.单一功能通过集群规模实现伸缩

对于用户量非常大的网站,再单一的功能一台服务器也无法满足用户量,所以以集群的方式来分担一台服务器的负载压力

应用服务器集群的伸缩性设计

1.HTTP重定向负载均衡
大型网站技术架构——读后摘要6

客户端发送的请求经过HTTP重定向负载均衡服务器,重定向负载均衡服务器会将应用服务器的ip给客户,客户重定向完成访问。缺点:访问太慢,相当于两次请求一次响应,太耗时。

2.DNS域名解析负载均衡
大型网站技术架构——读后摘要6

客户通过域名对服务器进行访问,域名请求首先通过DNS服务器,DNS服务器域名对应着一系列ip,DNS服务器会通过算法将其中一个ip返回给客户端,客户端再向指定服务器请求。

另外DNS服务器还支持地理位置域名解析,这样请求就会发往距离比较近的服务器。

3.反向代理负载均衡
大型网站技术架构——读后摘要6

反向代理服务器要配置在web服务器的前面,web服务器无需知道用户的ip,它只需与反向代理服务器网络相通;用户的网络要与反向代理服务器相通,这样反向代理服务器就要有两个网卡和两套ip地址。

4.IP负载均衡
大型网站技术架构——读后摘要6

在网络层通过修改目标服务器ip来实现负载均衡。

5.数据链路层负载均衡:
大型网站技术架构——读后摘要6
大型网站技术架构——读后摘要6
常用的负载均衡算法:
  • 轮询:所有请求依次发往每台服务器。
  • 加权轮询:根据服务器性能的不同,高性能的服务器分配更多的请求。
  • 随机:请求随机发往服务器
  • 最少连接:记录每台服务器正在处理的连接数,将新到的请求发往最少连接的服务器上。
  • 源地址散列:根据请求来的ip进行Hash计算,得到对应服务器,这样来自同一台ip地址的请求就会落到同一台服务器上处理,实现回话黏滞。

分布式缓存集群的伸缩性

分布式缓存服务器集群的设计不同于应用服务器集群。因为请求在访问缓存服务器是先找到有缓存数据的服务器,然后再访问服务器,如果缓存服务器集群的服务器很多,请求在找到有相应请求的缓存数据服务器将浪费大量时间。

Memcached分布式缓存集群的访问模型

被访问的数据都有key标志,这个标志可以帮你找到对应缓存服务器的ip和端口。

大型网站技术架构——读后摘要6
大型网站技术架构——读后摘要6
分布式缓存的一致性hash算法(hash环)

如果新加入一台服务器,那么受到影响的服务器就是加入服务器两端的两台服务器。

数据存储服务器集群伸缩性设计

关系数据库集群的伸缩设计

大型网站技术架构——读后摘要6

Cobar分布式关系数据库访问代理的应用

大型网站技术架构——读后摘要6

Cobar的伸缩有两种:Cobar服务器集群的伸缩和Mysql服务器集群的伸缩。

Cobar实现数据迁移可以利用一致性Hash算法

大型网站技术架构——读后摘要6

NoSQL数据库的伸缩性设计

主要看Hbase!!!

继续阅读