欢迎来到小居数码网-一家分享数码知识,生活小常识的网站,希望可以帮助到您。

当前位置:生活小常识 > 数码知识 >
优质

开源cdn分发系统原理简介(cdn内容分发机制)

数码知识

林晴昕优秀作者

原创内容 来源:小居数码网 时间:2024-08-13 15:09:01 阅读() 收藏:48 分享:41

导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有940个文字,大小约为4KB,预计阅读时间3分钟。

0x1简介因为公司分布式项目需要,突然想了解常见开源的CDN软件,于是Google了一下。

cdn内容分发机制

0x1简介

0x2原理

基本原理图

内容类型识别模块: (静态的文件:asp,jsp,php,jpg,gif,png等等;媒体文件:mp3,mp4,flv,mkv等等)

解析模块:(服务器域名配置cdn的系统的dns,客户访问的你网站的时候,dns会根据客户访问解析客户地址位置ip,反馈给调度模块就近分配)

调度模块:(根据客户ip的物理地址信息,自动分配就近的镜像服务器或者缓存服务器,这里调度分配方式具体根据规则有就近分配、根据来路ip依次抢占分配、根据调度模块识别的并发数来分配、根据调度模块队列请求数来分配、根据调度模块识别的应用优先级来分配。总之这个功能有点像路由器的流量控制,路由器的qos有针对数据包的、针对ip的、针对整个网断的、针对协议的、针对应用的。做过网络工程师的同学应该很好理解这个环节。这个模块还有负责单点故障转移的功能,遇到有问题的节点直接剔除集群,直到运维恢复正常后重新加入集群中)

缓存模块:(在并发量大的情况下,命中客户访问的请求,将镜像服务器的内容缓存到内存中,再次加快用户的访问速度。这里的缓存是实时刷新的。)

其他模块:(比方bgp模块,waf模块、ids模块、av模块、图像识别模块、视频识别模块)

流程中cdn的关键就是在于镜像和缓存,这两个模块的服务器宽带肯定是比集中式单点访问要快,因为用户是最短路径选择就近访问,这个也是分布式应用的优势,可以降低单点故障。

在日常生产环境中,这个里面有一个问题就是,很多小薇企业的站长只是单纯的只是域名上了cdn,其实你服务器出问题也会挂掉的,所以cdn包含镜像模块的情况下,应用就不会那么容易被攻击后挂掉了。选择好的cdn产品或者自研开发cdn产品,镜像服务器集群肯定是要考虑的。

0x3调研

Google搜索结果来看,常见的软件有squid,vanish,apache traffic server(ATS),nginx等,从目前使用的趋势来看Apache Traffic Server占主流,也是未来的趋势。

有一些文章提到国内互联网公司和CDN厂商目前使用的方案。

  • 网宿,目前主要是ATS,按照网宿的规模应该是有能力进行二次开发。
  • 蓝汛,早期是squid,当其余厂商拥抱ATS时,由于技术包袱未及时投入ATS,但目前也在使用ATS
  • 小米,京东等主要使用ATS
  • 腾讯,搜到一片腾讯员工的博客,里面提到正在使用ATS,因此猜测腾讯也有可能使用ATS,加上ATS是C++语言,符合腾讯C++技术栈
  • 百度, nginx + 自研缓存
  • 阿里,tengine + 自研swift,早起使用ATS,但由于某些原因放弃ATS使用自研,不过自研可能是C开发,应该是参考哪款开源软件,比如文件系统借鉴的是squid的文件系统,网上有阿里云CDN老大shudu的PPT,由于未开源,预计是代码重合度比较高。
  • 又拍云,之前使用ATS,最新的消息是自研BearCache,应该不是全量部署,从文章来看猜测是优化了网络框架和热重启架构,应该也是参考ATS等。
  • 新浪, nginx + ncache,需要第三方模块并且插件化开发,性能损失比较大
  • 美丽说, Jaguar,GO语言开发,前期使用ATS,应该是ATS的go语言简化版。
  • 0x4 总结

    ATS是主流,但是ATS是C++语言开发,二次开发技术难度高,对网络协议要有很深的基础,所以一些厂商转向自研,这篇文章也有助于即将从事CDN缓存开发的学习方向,就是好好研究ATS的源码。

    上面就是小居数码小编今天给大家介绍的关于(cdn内容分发机制)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。

    94%的朋友还想知道的:

    (240)个朋友认为回复得到帮助。

    部分文章信息来源于以及网友投稿,转载请说明出处。

    本文标题:开源cdn分发系统原理简介(cdn内容分发机制):http://sjzlt.cn/shuma/155251.html

    猜你喜欢