在为内容分发系统编写软件时必须考虑哪些设计因素,例如管理数据的同步和分发,将下载重定向到最近的服务器等等?
我也在寻找开源CDN(内容交付网络)软件的例子.我可以想到两个项目,CoralCDN和OpenCDN
请注意,CDN不仅仅是硬件带宽.CDN是软件和硬件的组合.
我想要的是用于流媒体和静态资产的软件.我无法确定如何在服务器之间正确同步流媒体(因为文件访问可能相当随机),而静态资产看起来更容易一些,因为它是一次性请求.
您意识到内容交付网络的价值纯粹取决于他们拥有的服务器数量以及服务器与最终用户的接近程度?
你确定你走的是正确的道路吗?
虽然我不知道任何开源项目,但也许值得总结一下CDN究竟是什么?毕竟,只需要一堆Web服务器就不会带你到任何地方.
CDN软件必须解决的关键问题:
同步.因此,您拥有美国,欧洲和亚洲的所有整洁农场,但您如何确保它们都具有您尝试提供的相同版本的文件?如果其中一个农场没有当前版本,您如何告诉负载均衡器使用哪个农场?
日志记录.在CDN中,您通常需要向客户收费,因此您需要测量流量和文件访问权限.但是,如果每个服务器场中有多个服务器场和多个Web服务器,则需要以某种方式集中日志记录
验证.毕竟,CDN不仅仅是向所有人提供HTTP内容的Web服务器.如果您的视频流CDN实际上限制了对特定用户的访问权限,该怎么办?
负载均衡.虽然这通常是单独完成的,但它也链接到同步部分.所以我是来自韩国的用户试图访问内容.负载均衡器发现首尔的农场是最近的 - 但不幸的是,首尔的农场还没有内容.所以CDN和Load Balancer需要弄清楚最近的Farm有哪些内容.让我们看看...巴黎,法国和美国洛杉矶都有内容.应该服务哪一个?
每个问题本身并不是CDN独有的问题,但CDN软件本质上是这些技术的组合.我忘了的其他人吗?
来自评论:
确定需要在哪里复制哪些文件.日本的Windows Update可能在日本和其他一些亚洲国家非常受欢迎,但欧洲和美国的请求可能较少,因此可能无需在CDN中的每个服务器场复制此文件.