内容交付网络算法,示例,代码

时间:2008-11-22 15:36:42

标签: design-patterns open-source cdn

在为内容分发系统编写软件时必须考虑哪些设计因素,例如管理数据的同步和分发,将下载重定向到最近的服务器等等?

我也在寻找开源CDN(内容分发网络)软件的示例。我可以想到两个项目,CoralCDNOpenCDN

请注意,CDN不仅仅是硬件带宽。 CDN是软件硬件的组合。

我想要的是用于流媒体和静态资产的软件。我无法确定如何在服务器之间正确同步流媒体(因为文件访问可能相当随机),而静态资产看起来更容易一些,因为它是一次性请求。

3 个答案:

答案 0 :(得分:7)

您意识到内容分发网络的价值纯粹取决于他们拥有的服务器数量以及服务器与最终用户的距离吗?

你确定你走的是正确的道路吗?

答案 1 :(得分:7)

虽然我不知道任何开源项目,但也许值得总结一下CDN究竟是什么?毕竟,只需要一堆Web服务器就不会带你到任何地方。

CDN软件必须解决的关键问题:

  • 同步。因此,您拥有美国,欧洲和亚洲的所有整洁农场,但您如何确保它们都具有您尝试提供的相同版本的文件?如果其中一个服务器场没有当前版本,您如何告诉负载均衡器使用哪个服务器场呢?
  • 记录日志。在CDN中,您通常需要向客户收费,因此您需要测量流量和文件访问权限。但是,每个服务器场中有多个服务器场和多个Web服务器,您需要以某种方式集中日志记录
  • 认证。毕竟,CDN不仅仅是向所有人提供HTTP内容的Web服务器。如果您有视频流的CDN,实际上只限制对某些用户的访问权限,该怎么办?
  • 负载平衡。虽然这通常是单独完成的,但它也链接到同步部分。所以我是来自韩国的用户试图访问内容。负载均衡器发现首尔的农场是最近的 - 但不幸的是,首尔的农场还没有内容。所以CDN和Load Balancer需要弄清楚最近的Farm有哪些内容。让我们看看...巴黎,法国和美国洛杉矶都有内容。哪一个应该服务?

每个问题本身并不是CDN独有的问题,但CDN软件本质上是这些技术的组合。我忘了的其他人吗?

来自评论:

  • 确定需要在哪里复制哪些文件。日本的Windows Update可能在日本和其他一些亚洲国家非常受欢迎,但欧洲和美国的请求可能较少,因此可能无需在CDN的每个服务器场中复制此文件。

答案 2 :(得分:3)

CDN不是一款软件。请至少谷歌或在维基上寻找东西。 http://en.wikipedia.org/wiki/Content_Delivery_Network