本文主要是介绍大型网站技术架构——读后摘要6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网站架构的伸缩性设计
1.不同功能进行物理分离实现伸缩
每次分离都会有新的服务器加入网站来处理特定服务。
再细化:
- 纵向分离:将业务流程上不同部分分离部署实现系统伸缩性。
- 横向分离:将不同的业务模块分离部署,实现伸缩性。
2.单一功能通过集群规模实现伸缩
对于用户量非常大的网站,再单一的功能一台服务器也无法满足用户量,所以以集群的方式来分担一台服务器的负载压力
应用服务器集群的伸缩性设计
1.HTTP重定向负载均衡
客户端发送的请求经过HTTP重定向负载均衡服务器,重定向负载均衡服务器会将应用服务器的ip给客户,客户重定向完成访问。缺点:访问太慢,相当于两次请求一次响应,太耗时。
2.DNS域名解析负载均衡
客户通过域名对服务器进行访问,域名请求首先通过DNS服务器,DNS服务器域名对应着一系列ip,DNS服务器会通过算法将其中一个ip返回给客户端,客户端再向指定服务器请求。
另外DNS服务器还支持地理位置域名解析,这样请求就会发往距离比较近的服务器。
3.反向代理负载均衡
反向代理服务器要配置在web服务器的前面,web服务器无需知道用户的ip,它只需与反向代理服务器网络相通;用户的网络要与反向代理服务器相通,这样反向代理服务器就要有两个网卡和两套ip地址。
4.IP负载均衡
在网络层通过修改目标服务器ip来实现负载均衡。
5.数据链路层负载均衡:
常用的负载均衡算法:
- 轮询:所有请求依次发往每台服务器。
- 加权轮询:根据服务器性能的不同,高性能的服务器分配更多的请求。
- 随机:请求随机发往服务器
- 最少连接:记录每台服务器正在处理的连接数,将新到的请求发往最少连接的服务器上。
- 源地址散列:根据请求来的ip进行Hash计算,得到对应服务器,这样来自同一台ip地址的请求就会落到同一台服务器上处理,实现回话黏滞。
分布式缓存集群的伸缩性
分布式缓存服务器集群的设计不同于应用服务器集群。因为请求在访问缓存服务器是先找到有缓存数据的服务器,然后再访问服务器,如果缓存服务器集群的服务器很多,请求在找到有相应请求的缓存数据服务器将浪费大量时间。
Memcached分布式缓存集群的访问模型
被访问的数据都有key标志,这个标志可以帮你找到对应缓存服务器的ip和端口。
分布式缓存的一致性hash算法(hash环)
如果新加入一台服务器,那么受到影响的服务器就是加入服务器两端的两台服务器。
数据存储服务器集群伸缩性设计
关系数据库集群的伸缩设计
Cobar分布式关系数据库访问代理的应用
Cobar的伸缩有两种:Cobar服务器集群的伸缩和Mysql服务器集群的伸缩。
Cobar实现数据迁移可以利用一致性Hash算法
NoSQL数据库的伸缩性设计
主要看Hbase!!!
这篇关于大型网站技术架构——读后摘要6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!