路由协议和架构/内容交付网络
外观
< 路由协议和架构
Web 缓存是一种存储最近需要内容(例如 HTTP 资源)的本地副本并充当客户请求的代理服务器的设备
- Web 缓存更靠近用户,而不是 Web 服务器
- 性能:当请求的资源已存在于缓存中时,回复速度更快;
- 带宽:不会加载昂贵的长距离链路(例如跨洋链路);
- 被动解决方案:如果请求的资源不在缓存中,用户需要等待 Web 缓存从 Web 服务器获取(拉取)它;
- 不透明:用户的 Web 浏览器需要手动配置才能联系该 Web 缓存。
内容交付网络 (CDN) 是一个分布在世界各地的 Web 缓存的叠加网络[1],它们协同工作以向用户提供更好的体验[2]
- 主动解决方案:Web 服务器在用户请求之前将内容(通常是最受欢迎的内容)复制(推送)到 Web 缓存;
- 透明:用户自动连接到 Web 缓存,无需在其客户端手动配置;
- 性能:即使用户移动,也始终连接到最近的 Web 缓存;
- 负载均衡:用户始终连接到负载最轻的 Web 缓存;
- 可扩展性:将内容部署到多个副本中允许大量请求,而单个 Web 服务器无法单独处理这些请求;
- 条件访问:可以根据用户(例如定向广告)自定义返回的内容。
CDN 非常适合生成大量流量的内容(例如多媒体资源),但并非所有内容都可以缓存
- 动态网页(例如股票市场价格);
- 自定义内容网页(例如用户帐户)。
CDN 可以通过多种方式部署
- 基于 DNS 的 CDN:根据主机名将流量重定向到最佳副本
- 基于 DNS 的路由:托管提供商需要与 DNS 服务器管理员达成协议;
- Akamai 方法:不需要干预 DNS 服务器;
- 基于 URL 的 CDN:根据完整的 URL 将流量重定向到最佳副本
当主机名被翻译成 IP 地址时,选择最佳副本。DNS 对查询的回复不仅取决于主机名,还取决于源:一个特殊的 DNS 服务器根据尽可能多的指标(RTT、服务器负载、响应时间等)计算一个副本路由表,其中包含类似的条目
{主机名,客户端 IP 地址} → 副本 IP 地址
“修改”的 DNS 服务器中的路由引擎具有标准接口以保证 透明性:用户认为与主机名相对应的 IP 地址是真实 Web 服务器的 IP 地址,而实际上是其中一个副本的 IP 地址。
添加一个新的参与者,托管提供商,构成了网络世界中一个新的商业机会
- 接入提供商:它为用户提供网络接入;
- 骨干提供商:它提供远程连接;
- 托管提供商:它为内容提供商提供 CDN 服务;
- 内容提供商:它提供内容。
- 问题
- 指标:指标测量,尤其是动态指标,并不容易,而仅限于第 3 层指标本身并不具有特别重要的意义;
- DNS 缓存:只有权威服务器知道所有副本,并且可以根据客户端位置选择最佳副本 → 层次结构中的中间 DNS 服务器无法缓存 DNS 回复;
- 粒度:重定向粒度在主机名级别,而不是单个 URL 级别 → 大型网站的内容不能拆分为多个缓存,因此同一个副本将被问及同一个网站中的两个不同页面。
Akamai CDN 利用一种专有的自动算法,在不干预 DNS 服务器的情况下将流量重定向到其副本
- 用户输入带有其正常域名的网页地址(例如http://cnn.com/index.html);
- 内容提供商(例如 CNN)的服务器返回一个网页,其中每个多媒体资源(例如图像)的地址都有一个特殊域名,对应于 Akamai 缓存中的一个特定副本(例如http://a128.g.akamai.net/7/23/cnn.com/a.gif而不是http://cnn.com/a.gif);
- 用户的 Web 浏览器在解析页面时会对新域名执行 DNS 查询,并从最近的副本获取多媒体资源。
包含副本的真实服务器被客户端视为具有相同 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。