CDN(content delivery network 或 content distribution network)模式专注于通过全球分布式缓存架构为经常访问的文件减少网络访问时的延迟。目标是加快交付应用程序内容给用户。内容是任何可以存储在一个文件,如图像、 视频和文档。内容交付网络 (CDN) 是一种全球分布式缓存的服务。CDN 在世界各地的许多地方保存了应用程序文件的副本。当用户访问时,会选择离这些地方接近结点,内容不需要走长距离网络来传递,所以它能访问到达速度更快,以此来改善用户体验。CDN 节点设在世界各地希望尽可以能接近的用户。它有自己的 URL 负载平衡解析器,根据用户不同地理位置,无论用户在什么地方将用户引向最近的节点。
CDN所面临的挑战:
• 应用程序数据访问从不一定能接近它所在地理位置最近的数据中心
• 多个客户端访问相同的应用程序数据对象 (如 HTML、 JavaScript、 图像、 视频或其他文件)
• 应用程序有包括大流量下载、 流媒体视频或其他大流量级的内容
CDN 可以有效地减少节点负载以加快各种类型的内容。
一般来说,互联网更快速度地数据传输与源数据和客户端有密切关系。将源数据的缓存副本放置得与客户端比较接近,当用户需要访问数据时,从最接近的位置检索它将比从原始结点检索会更快儿些。这种做法通常称为分布式缓存,这也是CDN 的作用所在。具体地说,我们将关注是通过 HTTP 访问的文件。虽然所有用户看到相同的 URL文件,不同的用户将被路由到不同的 CDN 节点。这是 CDN的要点 : 将请求路由到就近的 CDN 节点,以提高响应速度。
使用CDN的前后的简单示意图:
CDN的限制:
CDN 对于不经常访问的资源是无效的。通常只有在 CDN缓存过期前有至少两次访问的资源才算有效。
CDN 对于不断变化的资源不适用。
CDN 对于不想公开资源可能是一个糟糕的选择。
缓存可以不一致
CDN存储的资源复本指定过期时间,因而缓存图像文件可在僧一个小时,一个月有效的。任何资源缓存在CDN上,是潜在历史版本,因为在源数据与副本之间总是有一个更新与传输的延迟。这不是一个问题,但是需要考虑因素是缓存有效时间需要多长。Tips:缓存不命中就是低效的。
现实案例
淘宝在2010年的数据记录,淘宝CDN服务的图片规模包括大约250T容量的原图和大约250T容量的缩略图总和;约286亿左右的图片数,平均图片大小是17.45K;8K以下图片占图片数总量的61%,占存储容量的11%。CDN的部署规模达到22个节点,部署在网民相当密集的中心城市,每个节点目前处理能力在10G或以上,CDN部署的总处理能力已到220G以上,目前承载淘宝流量高峰时119G。淘宝自主研发CDN系统架构如下图:
随着CDN的兴起,它的介值链也出来的,如下图:
商业的CDN jet-stream, 蓝讯,网宿
免费的CDN:CloudFlare,Incapsula,OpenCDN
希望对您软件架构有帮助。您可能感兴趣的文章:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。