CDN的基本原理和基础架构

CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。

最简单的CDN网络由一个DNS服务器和几台缓存服务器组成:

  1. 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
  2. CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
  3. 用户向CDN的全局负载均衡设备发起内容URL访问请求。
  4. CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
  5. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
  6. 全局负载均衡设备把服务器的IP地址返回给用户。
  7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

<img src="https://pic3.zhimg.com/v2-7d4409a2d13943df2ca9c15defaec8c6_b.png" data-rawwidth="716" data-rawheight="411" class="origin_image zh-lightbox-thumb" width="716" data-original="https://pic3.zhimg.com/v2-7d4409a2d13943df2ca9c15defaec8c6_r.png">

CDN关键组件

  • LVS做四层均衡负载

DR模式 双LVS做Active-Active互备 负载均衡算法采用wrr

  • Tengine做七层负载均衡
  • Swift做HTTP缓存

高性能Cache 磁盘(SSD/SATA)

CDN基础架构

<img src="https://pic2.zhimg.com/v2-b41cf4ec53559c2fb15010932ccb4e41_b.png" data-rawwidth="813" data-rawheight="477" class="origin_image zh-lightbox-thumb" width="813" data-original="https://pic2.zhimg.com/v2-b41cf4ec53559c2fb15010932ccb4e41_r.png">

CDN部署架构

<img src="https://pic3.zhimg.com/v2-6326f058d381ac9da88ac519012d8822_b.png" data-rawwidth="896" data-rawheight="533" class="origin_image zh-lightbox-thumb" width="896" data-original="https://pic3.zhimg.com/v2-6326f058d381ac9da88ac519012d8822_r.png">

------------------------------------华丽的分割线------------------------------------

二、为什么要使用CDN?或者说CDN能解决什么问题?

如果你在经营一家网站,那你应该知道几点因素是你制胜的关键:

  • 内容有吸引力
  • 访问速度快
  • 支持频繁的用户互动
  • 可以在各处浏览无障碍

另外,你的网站必须能在复杂的网络环境下运行,考虑到全球的用户访问体验。你的网站也会随着使用越来越多的对象(如图片、帧、CSS及APIs)和形形色色的动作(分享、跟踪)而系统逐渐庞大。所以,系统变慢带来用户的流失。

Google及其它网站的研究表明,一个网站每慢一秒钟,就会丢失许多访客,甚至这些访客永远不会再次光顾这些网站。可以想像,如果网站是你的盈利渠道或是品牌窗口,那么网站速度慢将是一个致命的打击。

这就是你使用CDN的第一个也是最重要的原因:**为了加速网站的访问**

除此之外,CDN还有一些作用:

1. 为了实现跨运营商、跨地域的全网覆盖

互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问。CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点商,合理部署CDN边缘分发存储节点,充分利用带宽资源,平衡源站流量。阿里云在国内有500+节点,海外300+节点,覆盖主流国家和地区不是问题,可以确保CDN服务的稳定和快速。

2. 为了保障你的网站安全

CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当无无形中给你的网站添加了一把保护伞,应对绝大部分的互联网攻击事件。防攻击系统也能避免网站遭到恶意攻击。

3. 为了异地备援

当某个服务器发生意外故障时,系统将会调用其他临近的健康服务器节点进行服务,进而提供接近100%的可靠性,这就让你的网站可以做到永不宕机。

4. 为了节约成本投入

使用CDN加速可以实现网站的全国铺设,你根据不用考虑购买服务器与后续的托管运维,服务器之间镜像同步,也不用为了管理维护技术人员而烦恼,节省了人力、精力和财力。

5. 为了让你更专注业务本身

CDN加速厂商一般都会提供一站式服务,业务不仅限于CDN,还有配套的云存储、大数据服务、视频云服务等,而且一般会提供7x24运维监控支持,保证网络随时畅通,你可以放心使用。并且将更多的精力投入到发展自身的核心业务之上。

三、CDN适用哪些场景?

1、网站站点/应用加速

站点或者应用中大量静态资源的加速分发,建议将站点内容进行动静分离,动态文件可以结合云服务器ECS,静态资源如各类型图片、html、css、js文件等,建议结合 对象存储OSS 存储海量静态资源,可以有效加速内容加载速度,轻松搞定网站图片、短视频等内容分发

  • 架构示意图

<img src="https://pic2.zhimg.com/v2-69de8db0b2538c59753bc6d39d66a4fd_b.jpg" data-rawwidth="1360" data-rawheight="800" class="origin_image zh-lightbox-thumb" width="1360" data-original="https://pic2.zhimg.com/v2-69de8db0b2538c59753bc6d39d66a4fd_r.jpg">

2、视音频点播/大文件下载分发加速

支持各类文件的下载、分发,支持在线点播加速业务,如mp4、flv视频文件或者平均单个文件大小在20M以上,主要的业务场景是视音频点播、大文件下载(如安装包下载)等,建议搭配对象存储OSS使用,可提升回源速度,节约近2/3回源带宽成本。

  • 架构示意图

<img src="https://pic1.zhimg.com/v2-04a9d1772997e9379764c556cbcd3644_b.jpg" data-rawwidth="750" data-rawheight="645" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic1.zhimg.com/v2-04a9d1772997e9379764c556cbcd3644_r.jpg">

3、视频直播加速(内测中)

视频流媒体直播服务,支持媒资存储、切片转码、访问鉴权、内容分发加速一体化解决方案。结合弹性伸缩服务,及时调整服务器带宽,应对突发访问流量;结合媒体转码服务,享受高速稳定的并行转码,且任务规模无缝扩展。目前CDN直播加速已服务内部用户测试并优化,即将上线,敬请期待

  • 架构示意图

<img src="https://pic3.zhimg.com/v2-458ed049f2c1d69786db11e309c1b602_b.jpg" data-rawwidth="612" data-rawheight="454" class="origin_image zh-lightbox-thumb" width="612" data-original="https://pic3.zhimg.com/v2-458ed049f2c1d69786db11e309c1b602_r.jpg">

4、移动应用加速

移动APP更新文件(apk文件)分发,移动APP内图片、页面、短视频、UGC等内容的优化加速分发。提供httpDNS服务,避免DNS劫持并获得实时精确的DNS解析结果,有效缩短用户访问时间,提升用户体验。

  • 架构示意图

<img src="https://pic2.zhimg.com/v2-7d5ec64dc3bae413f384ae81852ce7a5_b.jpg" data-rawwidth="380" data-rawheight="240" class="content_image" width="380">

------------------------------------华丽的分割线------------------------------------

四、关于CDN的一些常见名词:

1、Origin Server源站

做 CDN 之前的客户真正的服务器。

2、User

访问者,也就是要访问网站的网民。

3、Last Mile
最后一公里,也就是网民到他所访问到的 CDN 服务器之间的路径。

4、域名

域名是Internet网络上的一个服务器或一个网络系统的名字,全世界,没有重复的域名。

5、CNAME记录

它是一个别名记录( Canonical Name );当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。

6、CNAME域名

CDN的域名加速需要用到CNAME记录,在阿里云控制台配置完成CDN加速后,您会得到一个加速后的域名,称之为CNAME域名(该域名一定是*.*http://kunlun.com), 用户需要将自己的域名作CNAME指向这个*.*http://kunlun.com的域名后,域名解析的工作就正式转向阿里云,该域名所有的请求都将转向阿里云CDN的节点。

7、DNS

DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

比如:上网时输入的百度一下,你就知道会自动转换成为220.181.112.143

8、边缘节点

也称CDN节点、Cache节点等;是相对于网络的复杂结构而提出的一个概念,指距离最终用户接入具有较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连接速度。其作用是将访问量较大的网页内容和对象保存在服务器前端的专用cache设备上,以此来提高网站访问的速度和质量。

9、cache

cache高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM存储器速度快,所以当RAM的访问速度低于微处理器的速度时,常使用高速缓冲存储器。

cdn服务器的更多相关文章

  1. 使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度

    碰到问题:移动用户访问web服务器www.osyunwei.com很慢解决办法:1.在移动机房放置一台nginx反向代理服务器2.通过域名DNS智能解析,所有移动用户访问www.osyunwei.co ...

  2. 自己搭建CDN服务器静态内容加速-LuManager CDN使用教程

    为什么要自己来搭建一个CDN服务器实现网站访问加速?一是免费CDN服务稳定性和加速效果都不怎么行:二是用国内的付费CDN服务价格贵得要死,一般的草根站长无法承受:三是最现实的问题国内的CDN要求域名B ...

  3. 如何搭建自己CDN服务器

    转载:http://server.zzidc.com/fwqpz/587.html 目前在免费CDN市场上,360因为“免费”而越做越大,加速乐做的很早.但因免费的节点不多,好多用户都被强走了.安全宝 ...

  4. 504错误解决办法 让你的浏览器强制在后端服务器执行而不用通过前端CDN服务器

      因为后端执行时间过长,前端不等待,导致提示504错误的解决办法 504 错误是因为你的CDN服务器设置的延时有限, 超时导致的504 是前端不等待中止,是前端不行,后端应该正常 502 错误是后端 ...

  5. 用Nginx搭建CDN服务器方法-开启Nginx缓存与镜像,自建图片服务器

    利用Nginx的proxy_cache搭建缓存服务器一:编译ngx_cache_purge1.Nginx的Proxy_cache是根据Key值md5哈希存储缓存,支持任意的Key,例如你可以根据”域名 ...

  6. 利用Squid + DNSPOD 搭建CDN服务器

    首先下载squid for windows安装包 squid-2.7.STABLE5-bin.zip 然后解压缩,放到C盘squid目录内. 进入目录C:\squid\etc内,将所有文件的.defa ...

  7. Linux下使用Nginx做CDN服务器下的配置

    由于使用docker配置Nginx比较方便,所以博主就使用docker做为容器配置下 第一步.配置docker-compose.yml文件 version: services: nginx: rest ...

  8. 字体文件放入CDN服务器中,跨域问题(IIS版)

    Font from origin 'http:/XXXX' has been blocked from loading by Cross-Origin Resource Sharing policy: ...

  9. 如果CDN服务器出了问题,怎么做不影响自己的网站

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3.jquery.min.js"></ ...

随机推荐

  1. sql MySQL5.7 安装 centos docker

    MySQL5.7 安装 1 . 普通安装 # 准备工作 停止以前的数据库并删除配置文件 systemctl stop mysqld rpm -e mysql-community-server-5.7. ...

  2. 曹工说Redis源码(1)-- redis debug环境搭建,使用clion,达到和调试java一样的效果

    概要 最近写了spring系列,这个系列还在进行中,然后有些同学开始叫我大神,然后以为我各方面都比较厉害,当然了,我是有自知之明的,大佬大神什么的,当作一个称呼就好,如果真的以为自己就是大神,那可能就 ...

  3. STL之sstream的用法

    STL之sstream的用法 说在前面: 库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一 ...

  4. vue中keepAlive的用法[返回页面不刷新]

    本文转载于時間蒼白了誓言_49b9 使用vue单页开发项目时遇到一个问题:在列表页进入详情页,按返回键返回列表页时页面刷新了,用户体验非常差啊!!!查阅了一下相关问题,使用解决这个问题,下面是我的使用 ...

  5. Hibernate实现limit语句效果

    Hibernate hibernate实现limit效果 由于hql语句内无法直接书写limit语法,所以需要通过别的方式来达成这个效果 limit效果一般需要有两个参数:开始位置start和查询数量 ...

  6. web安全学习神器——DVWA安装部署

    前言 DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序.包含了SQL注入.XSS.文件包含等常见的一些安全漏洞.接下来我会用图文的形式讲解一下DVWA的下载与 ...

  7. PTA数据结构与算法题目集(中文) 7-24

    PTA数据结构与算法题目集(中文)  7-24 7-24 树种统计 (25 分)   随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类.请编写程序帮助研究人员统计每种树的数量,计算每种树 ...

  8. Linux 定时实行一次任务命令

    当我们想在指定的时间自动执行 一次 任务的时候,可以使用at命令 启动服务 使用时首先检查atq的服务是否启动 service atd status # 检查atd的状态 service atd st ...

  9. TC1.6SourceCode java课程表

    /** * @version 2.0 * @author sharks */ /** * Instruction * this version will use IO * apply file to ...

  10. Linux基础管理篇,软件管理程序,yum与rpm

    一.RPM 一般来说,rpm类型的文件在安装的时候,会检测当前的系统是否满足当前软件需要的环境.若符合,则该软件就会被安装,并且会把软件的相关信息写入/var/lib/rpm/目录下的数据库文件中. ...