作者:阿里云云栖社区
链接:https://www.zhihu.com/question/36514327/answer/193768864
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/36514327/answer/193768864
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一. 什么是CDN
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN的关键技术主要有内容存储和分发技术。
CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
常用来解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。
二、CDN的基本原理和基础架构
最简单的CDN网络由一个DNS服务器和几台缓存服务器组成:
- 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
- CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
- 用户向CDN的全局负载均衡设备发起内容URL访问请求。
- CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
- 全局负载均衡设备把服务器的IP地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。把获取到的内容保存到缓存服务器,并把内容返回给用户。
三. CDN关键组件
- LVS做四层均衡负载
DR模式双LVS做Active-Active互备负载均衡算法采用wrr
- Tengine做七层负载均衡
阿里基于Nginx开发的高性能HTTP服务器,已经开源,详细请了解:The Tengine Web Server主动健康检查SPDY v3支持
- Swift做HTTP缓存
高性能Cache磁盘(SSD/SATA)
四、数据同步
在CDN服务中,CDN节点中的内容与源网站内容的同步主要是靠设置刷新时间策略来实现的。针对不同的内容设置不同的刷新时间,对于更新频率比较低的内容可以设置较长的刷新时间以减轻回源站的访问压力;对频繁更新的内容,我们可以设置成10分钟或更短,以此来保证内容的同步。设置刷新时间可以按目录来设置,也可以按具体URL来设置,或按某个关键字段来设置,非常灵活。