重定向与负载均衡
1、什么是重定向
重定向技术通常可以用来确定报文是否终结于某个代理,缓存或服务器集群中某台特定的服务器. —— HTTP权威指南
感觉很绕口,举个栗子🌰🙋简单理解起来相当于你拿着一个地址从家里出发(浏览器发送请求)去找一个亲戚,到了后发现他已经搬家了,邻居告诉了你一个新的地址(新的请求),此时天已经晚了,你回家休息一晚上(又回到了浏览器),第二天拿着新的地址去找(浏览器再次发送请求),终于找到了。
整个过程,家可以看成浏览器,两个不同的地址可以看成两次不同的request,两个地址都是从家里开始出发,相当于浏览器发送两次不同的请求,先找到旧url,没找到,再回到浏览器去找新url,最终跳转到新的url上,这就是url发生改变的原因。
带入到 HTTP 中,服务器可以通过返回一个重定向响应来进行重定向。这个重定向响应有一个以 3 开头的状态码 ,并且有一个 Location
头字段 表示要重定向到的位置。
2、为什么要重定向
由于HTTP应用程序总是要做下列3件事情,所以现代网络中重定向时普遍存在的
- 可靠的执行HTTP事务
- 最小化时延
- 节约网络带宽
出于这些原因,Web内容通常分布在很多地方。这样做是出于可靠性的考虑:
- 如果一个位置出问题了,还有其他的可用;
- 如果客户端能去访问较近的资源,就可以更快的收到所请求的内容,以降低响应时间
- 将目标服务器分散,还可以减少网络拥塞
可以将重定向当作一组有助于找到“最佳”分布式内容的技术。
3、通用的重定向方法
http重定向
web服务器可以将短的重定向报文发回给客户端,与其他形式相比,http重定向的优点之一就是重定向服务器知道客户端的IP地址,从理论上来讲他可以做出更合理的选择;
http重定向的局限
- 需要原始服务器进行大量处理来判断要重定向到哪条服务器上去。有时,发布重定向所需的处理量几乎与提供页面本身所需的处理量一样。
- 增加了用户时延,因为访问页面时要进行两次往返
- 如果重定向服务器出故障,站点就会瘫痪。
DNS重定向
DNS重定向,有时称为DNS劫持,是从DNS服务器转移结果的做法。下图中,DNS服务器要决定为www.joes.hardware.com返回4个IP地址中的哪一个;
其中DNS服务器决定要选择使用那个IP,最简单的决策算法就是轮转。DNS轮转使用了DNS主机名解析中的一项特性,在Web服务器集群中平衡负载。
DNS重定向算法:
- 轮转
- 负载均衡算法
- 邻接路由算法
- 故障屏蔽算法
任播寻址
几台服务器使用相同的IP地址。每台服务器都会伪装成一个骨干路由器。其他路由器会将共享的IP地址分组发送给最近的服务器。
任播寻址的局限
- 需要拥有/配置路由器
- 有地址冲突的风险,如果路由变化了,与已建立的TCP连接相关的分组会被发送到其他的服务区,可能会使Tcp连接中断
IP/MAC 转发
在以太网中,HTTP 报文都是以携带地址的数据分组的形式发送的。每个分组都有一个第四层地址,由源 IP 地址、目的 IP 地址以及 TCP 端口号组成,它是第四层设备所关注的地址。
每个分组还有一个第二层地址,MAC(Media Access Control,媒体访问控制)地址,这是第二层设备(通常是交换机和 Hub)所关注的地址。第二层设备的任务是接收具有特定输入 MAC 地址的分组,然后将其转发到特定的输出 MAC 地址上去。
IP 地址转发
在 IP 地址转发中,交换机或其他第四层设备会检测输入分组中的 TCP/IP 地址,并通过修改目的 IP 地址(不是目的 MAC 地址),对分组进行相应的转发。
与 MAC 转 发相比,这么做的优点是目标服务器不需要位于一跳远的地方;只需要位于交换机的上游就行了,而且通常第三层的端到端因特网路由都会将分组传送到正确的地方。这种类型的转发也被称为 NAT(Network Address Translation,网络地址转换)。
1.浏览器渲染流程
2.数据包是如何完整的发送到应用程序
3.浏览器的进程和线程
4.jwt鉴权机制
5.JS模块化
6.深入理解URL
7.HTTP报文是什么
8.React SSR 的实现