利用内容分发服务分担负载
如何找到最近的缓存服务器
用DNS服务器来分配访问:
- 如果Web服务器的域名只对应一个IP地址,直接返回
- 如果Web服务器的域名对应多个IP地址,返回最近的
如何判断客户端与缓存服务器之间的距离
- 本质上是估算客户端DNS服务器到缓存服务器之间的距离,精度较差
- 接下来,DNS服务器根据路由表查询从本机到DNS查询消息的发送方,也就是客户端DNS服务器的路由信息。例如,根据图5.13路由器A的路由表,可以查出路由器A到客户端DNS服务器的路由。通过互联网内部的路由表中的路由信息可以知道先通过运营商X,然后通过运营商Y,最后到达运营商Z这样的信息,通过这样的信息可以大致估算出距离。依次查询所有路由器的路由表之后,我们就可以通过比较找出哪一台路由器距离客户端DNS服务器最近。提供路由表的路由器位于缓存服务器的位置,而客户端DNS服务器也应该和客户端在同一位置,这样就等于估算出了缓存服务器与客户端之间的距离,从而能够判断出哪台缓存服务器距离客户端最近了。实际上,客户端DNS服务器不一定和客户端在同一位置,因此可能无法得出准确的距离,但依然可以达到相当的精度。
通过重定向服务器分配访问目标
- HTTP头部中有Location的字段,意思是重定向,通过这种方法可以将访问目标分配到最近的缓存服务器
- 重定向服务器收集了来自各个路由器的路由信息,可以根据这些信息找到最近的缓存服务器。重定向服务器注册到了Web服务器上,如果客户端发送来HTTP请求消息的话,重定向服务器可以将缓存服务器的地址放到Locaiton字段中返回响应
- 重定向的方法是根据客户端发送来的HTTP消息的发送方IP地址来估算距离的,因此精度较高
- 缺点在于增加了HTTP消息的交互次数
缓存的更新方法会影响性能
- 让Web服务器在原始数据发生更新时,立即通知缓存服务器,使得缓存服务器上的数据一直保持最新状态