概述
最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。
重定向和负载均衡
1.http应用程序总是要做下列3件事:
- 可靠地执行http事务;
- 最小化时延;
- 节约网络带宽。
2.http重定向的过程:
- Alice向www.joes-hardware.com发送一条请求。
- 服务器没有回送带有http状态码200的web页面主体,而是回送了一个带有状态码302的重定向报文。
- 浏览器会用重定向URL重新发送请求,这次会发送给主机161.58.228.45。(另一个客户端可能会被重定向到另一台服务器上去,比如Bob的请求可能会被重定向到161.58.228.46)
3.http重定向有以下缺点:
- 需要原始服务器进行大量处理来判断要重定向到哪台服务器上去。
- 增加了用户时延,因为访问页面时要进行两次往返。
- 如果重定向服务器出故障,站点就会瘫痪。
4.DNS重定向:每次客户端访问网站时,都必须将域名解析为IP地址,DNS解析程序可能是客户端自己的操作系统,可能是客户端网络中的一台DNS服务器,或者是一台远距离的DNS服务器。
5.DNS轮转:为了使web服务器集群平衡负载,DNS主机名解析经常用到DNS轮转。大多数DNS客户端只会使用多地址集中的第一个地址,为了均衡负载,大多数DNS服务器都会在每次完成查询之后对地址进行轮转。
6.由于单个客户端的缓存的存在,DNS轮转通常都不会平衡单个客户端的负载——一个客户端通常会在很长时间内连接到一台服务器上。
7.除了DNS轮转,还有其它DNS的重定向算法:
- 负载均衡算法。(每次都将负载最轻的web服务器放在列表的最前面)
- 邻接路由算法。(DNS服务器会尝试将用户导向最近的web服务器)
- 故障屏蔽算法。(DNS服务器会绕过出现服务终端或其他故障的服务器。)
8.怎么重定向到某个代理上去呢:
- 显式的浏览器配置。(在浏览器中配置代理,缺点是如果代理崩了,用户就会遇到连接方面的问题,而且每次修改代理都需要修改浏览器配置)
- 代理自动配置。(使用PAC文件,里面有每个URL所关联的代理,这个PAC文件不是配置而是动态获取的)
- 透明拦截。
9.缓存代理服务器重定向:
- WCCP重定向
- ICP(因特网缓存协议)
- CARP(缓存阵列路由协议)
- HTCP(超文本缓存协议)