跳转到内容

路由协议和架构/内容交付网络

来自维基教科书,开放世界中的开放书籍
Previous page
组播路由
路由协议和架构 Next page
关于网络设备架构的提示
内容交付网络

Web 缓存是一种存储最近需要内容(例如 HTTP 资源)的本地副本并充当客户请求的代理服务器的设备

  • Web 缓存更靠近用户,而不是 Web 服务器
    • 性能:当请求的资源已存在于缓存中时,回复速度更快;
    • 带宽:不会加载昂贵的长距离链路(例如跨洋链路);
  • 被动解决方案:如果请求的资源不在缓存中,用户需要等待 Web 缓存从 Web 服务器获取(拉取)它;
  • 不透明:用户的 Web 浏览器需要手动配置才能联系该 Web 缓存。

内容交付网络 (CDN) 是一个分布在世界各地的 Web 缓存的叠加网络[1],它们协同工作以向用户提供更好的体验[2]

  • 主动解决方案:Web 服务器在用户请求之前将内容(通常是最受欢迎的内容)复制(推送)到 Web 缓存;
  • 透明:用户自动连接到 Web 缓存,无需在其客户端手动配置;
  • 性能:即使用户移动,也始终连接到最近的 Web 缓存;
  • 负载均衡:用户始终连接到负载最轻的 Web 缓存;
  • 可扩展性:将内容部署到多个副本中允许大量请求,而单个 Web 服务器无法单独处理这些请求;
  • 条件访问:可以根据用户(例如定向广告)自定义返回的内容。

CDN 非常适合生成大量流量的内容(例如多媒体资源),但并非所有内容都可以缓存

  • 动态网页(例如股票市场价格);
  • 自定义内容网页(例如用户帐户)。

CDN 可以通过多种方式部署

  • 基于 DNS 的 CDN:根据主机名将流量重定向到最佳副本
  • 基于 URL 的 CDN:根据完整的 URL 将流量重定向到最佳副本

基于 DNS 的 CDN

[编辑 | 编辑源代码]

基于 DNS 的路由

[编辑 | 编辑源代码]
传统浏览。
基于 DNS 的 CDN 浏览。

当主机名被翻译成 IP 地址时,选择最佳副本。DNS 对查询的回复不仅取决于主机名,还取决于源:一个特殊的 DNS 服务器根据尽可能多的指标(RTT、服务器负载、响应时间等)计算一个副本路由表,其中包含类似的条目

{主机名,客户端 IP 地址} → 副本 IP 地址

“修改”的 DNS 服务器中的路由引擎具有标准接口以保证 透明性:用户认为与主机名相对应的 IP 地址是真实 Web 服务器的 IP 地址,而实际上是其中一个副本的 IP 地址。

添加一个新的参与者,托管提供商,构成了网络世界中一个新的商业机会

  • 接入提供商:它为用户提供网络接入;
  • 骨干提供商:它提供远程连接;
  • 托管提供商:它为内容提供商提供 CDN 服务;
  • 内容提供商:它提供内容。
问题
  • 指标:指标测量,尤其是动态指标,并不容易,而仅限于第 3 层指标本身并不具有特别重要的意义;
  • DNS 缓存:只有权威服务器知道所有副本,并且可以根据客户端位置选择最佳副本 → 层次结构中的中间 DNS 服务器无法缓存 DNS 回复;
  • 粒度:重定向粒度在主机名级别,而不是单个 URL 级别 → 大型网站的内容不能拆分为多个缓存,因此同一个副本将被问及同一个网站中的两个不同页面。

Akamai 方法

[编辑 | 编辑源代码]

Akamai CDN 利用一种专有的自动算法,在不干预 DNS 服务器的情况下将流量重定向到其副本

  1. 用户输入带有其正常域名的网页地址(例如http://cnn.com/index.html);
  2. 内容提供商(例如 CNN)的服务器返回一个网页,其中每个多媒体资源(例如图像)的地址都有一个特殊域名,对应于 Akamai 缓存中的一个特定副本(例如http://a128.g.akamai.net/7/23/cnn.com/a.gif而不是http://cnn.com/a.gif);
  3. 用户的 Web 浏览器在解析页面时会对新域名执行 DNS 查询,并从最近的副本获取多媒体资源。

基于 URL 的 CDN

[编辑 | 编辑源代码]

服务器负载均衡

[编辑 | 编辑源代码]
内容感知 SLB。

包含副本的真实服务器被客户端视为具有相同 IP 地址的单个虚拟服务器。

服务器负载均衡器 (SLB) 将发送到虚拟服务器的流量负载均衡到几个真实服务器之间

  • 第 4 层交换:TCP 连接没有被 SLB 终止(不感知内容
    • 其中一个真实服务器回复与客户端的三次握手;
    • 属于同一个 TCP 会话的所有 HTTP 查询都必须始终由同一个真实服务器提供服务;
    • 负载均衡可以基于源 IP 地址、源 TCP 端口等;
  • 第 7 层交换:TCP 连接被 SLB 终止(感知内容),充当代理
    • SLB 回复与客户端的三次握手,以便能够捕获稍后请求的 URL;
    • 根据 SLB 的决定,每个 HTTP 查询都可以由当前负载最轻的真实服务器提供服务;
    • 负载均衡基于完整的 URL。
问题
  • 加密连接(HTTP):SLB 需要拥有服务器的私有 SSL 密码密钥,并且需要支持处理传输中数据包的加密/解密的负载;
  • 粘性连接:某些应用程序要求来自同一客户端的 TCP 连接被重定向到同一服务器(例如购物车)→ 也应该考虑 cookie;
  • 地理分布:所有副本彼此靠近,也靠近 SLB,而 SLB 远离客户端。

内容路由

[编辑 | 编辑源代码]

内容路由器是根据 URL 将流量路由到最佳副本的路由器

  • TCP:一系列内容路由器在其之间终止 TCP 连接 → 引入了太多延迟;
  • 内容交付控制协议:URL 由第一个内容路由器提取,并通过特定协议传播。
问题
  • 有状态: 第一个内容路由器需要终止 TCP 连接才能获取用户查询的 URL;
  • 设备复杂性: 解析数据包以获取 URL 很复杂 → 第七层交换机是复杂且昂贵的设备;
  • 协议复杂性: 提出的内容交付控制协议非常复杂;
  • 隐私: 内容路由器会读取用户查询的所有 URL。

参考文献

[编辑 | 编辑源代码]
  1. 覆盖网络是在另一个网络之上构建的计算机网络。
  2. 用户体验质量衡量用户对服务的体验(例如网络浏览)。
Previous page
组播路由
路由协议和架构 Next page
关于网络设备架构的提示
内容交付网络
华夏公益教科书