随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激增,网络访问路径过长,从 而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个 急待解决的问题。
很多时候,大家都在谈CDN,那么何为CDN,原理是什么,今天就给大家普及普及。

CDN

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。

下面是CDN的一个简单的示意图:

如上图所示,是CDN一个常见的架构示意图,其工作流程可以总结为:当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容。

CDN相关技术

CDN的实现需要依赖多种网络技术的支持,其中最主要的包括负载均衡技术、动态内容分发与复制技术、缓存技术等。

负载均衡技术

负载均衡技术不仅仅应用于CDN中,在网络的很多领域都得到了广泛的应用,如服务器的负载均衡、网络流量的负载均衡。顾名思义,网络中的负载均衡就是将网络的流量尽可能均匀分配到几个能完成相同任务的服务器或网络节点上,由此来避免部分网络节点过载。这样既可以提高网络流量,又提高了网络的整体性能。在CDN中,负载均衡又分为服务器负载均衡和服务器整体负载均衡(也有的称为服务器全局负载均衡)。服务器负载均衡是指能够在性能不同的服务器之间进行任务分配,既能保证性能差的服务器不成为系统的瓶颈,又能保证性能高的服务器的资源得到充分利用。而服务器整体负载均衡允许Web网络托管商、门户站点和企业根据地理位置分配内容和服务。通过使用多站点内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。在CDN的方案中服务器整体负载均衡将发挥重要作用,其性能高低将直接影响整个CDN的性能。

动态分发与复制技术

众所周知,网站访问响应速度取决于许多因素,如网络的带宽是否有瓶颈、传输途中的路由是否有阻塞和延迟、网站服务器的处理能力及访问距离等。多数情况下,网站响应速度和访问者与网站服务器之间的距离有密切的关系。如果访问者和网站之间的距离过远的话,它们之间的通信一样需要经过重重的路由转发和处理,网络延误不可避免。一个有效的方法就是利用内容分发与复制技术,将占网站主体的大部分静态网页、图像和流媒体数据分发复制到各地的加速节点上。所以动态内容分发与复制技术也是CDN所需的一个主要技术。

缓存技术

缓存技术已经不是一种新鲜技术。Web缓存服务通过几种方式来改善用户的响应时间,如代理缓存服务、透明代理缓存服务、使用重定向服务的透明代理缓存服务等。通过Web缓存服务,用户访问网页时可以将广域网的流量降至最低。对于公司内联网用户来说,这意味着将内容在本地缓存,而无须通过专用的广域网来检索网页。对于Internet用户来说,这意味着将内容存储在他们的ISP的缓存器中,而无须通过Internet来检索网页。这样无疑会提高用户的访问速度。CDN的核心作用正是提高网络的访问速度,所以,缓存技术将是CDN所采用的又一个主要技术。

工作原理

CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据,从而降低网络的访问时间。
首先,让我们看一下传统的未加缓存服务的访问过程:

如图可以看出,传统的网络访问的流程如下:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址;
  2. LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期);
  3. ROOT DNS将域名授权dns记录回应给 LocalDns;
  4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址;
  5. 域名授权dns 查询域名记录后,回应给 LocalDns;
  6. LocalDns 将得到的域名ip地址,回应给用户端;
  7. 用户得到域名ip地址后,访问站点服务器;
  8. 站点服务器应答请求,将内容返回给客户端.

下面让我们看一下使用CDN缓存后的网站的访问过程:

如上图,是使用CDN缓存后的网络访问流程:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址;
  2. LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期);
  3. ROOT DNS将域名授权dns记录回应给 LocalDns;
  4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址;
  5. 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns;
  6. LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址;
  7. 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns;
  8. LocalDns 将得到的域名ip地址,回应给用户端;
  9. 用户得到域名ip地址后,访问站点服务器。

宗上,CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据,从而降低网络的访问的速度。

一文看懂CDN加速原理相关推荐

  1. 一文读懂CDN加速原理

    一文读懂CDN加速原理 什么是 CDN 工作原理 传统访问过程 CDN 访问过程 组成要素 智能调度 DNS 缓存功能服务 负载均衡设备 内容 Cache 服务器 共享存储 名词解释 CNAME记录( ...

  2. 一文搞懂CDN加速原理

    目录 一.什么是 CDN 二.CDN工作原理 传统访问过程 CDN访问过程 CDN网络的组成要素 三.名词解释 CNAME记录(CNAME record) CNAME域名 DNS 回源host 协议回 ...

  3. cdn搭建原理_一文搞懂CDN加速原理

    二.CDN工作原理 传统访问过程 传统访问过程 由上图可见,用户访问未使用CDN缓存网站的过程为: CDN访问过程 CDN访问过程 通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为: ...

  4. 一文彻底了解 CDN 加速原理

    一.什么是 CDN CDN 的全称是(Content Delivery Network),即内容分发网络.其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接 ...

  5. 一文看懂Transformer内部原理(含PyTorch实现)

    Transformer注解及PyTorch实现 原文:http://nlp.seas.harvard.edu/2018/04/03/attention.html 作者:Alexander Rush 转 ...

  6. AI绘画火了!一文看懂背后技术原理

    导语 | 近些年AI蓬勃发展,在各行各业都有着不同方式的应用.而AI创作艺术和生产内容无疑是今年以来最热门的话题,AI创作到底发生过什么,原理又是如何,是噱头还是会有对我们有用的潜在应用场景呢?我们旨 ...

  7. 一文看懂POE供电原理

    现在越来越多的人,开始接触和了解使用POE监控供电系统,于是乎,在网上找了一些关于POE供电的基本原理资料,与大家共同分享. 标准的五类网线有四对双绞线但是在10M BASE-T和100M BASE- ...

  8. 一文看懂内存池原理及创建(C++实现)

    1. 什么是内存池 1.1 池化技术 池是在计算技术中经常使用的一种设计模式,其内涵在于:将程序中需要经常使用的核心资源先申请出来,放到一个池内,有程序自管理,这样可以提高资源的利用率,也可以保证本程 ...

  9. π型滤波频率计算_一文看懂π型滤波电路原理

    π型滤波器简介 π型滤波器包括两个电容器和一个电感器,它的输入和输出都呈低阻抗.π型滤波有RC和LC两种, 在输出电流不大的情况下用RC,R的取值不能太大,一般几个至几十欧姆,其优点是成本低.其缺点是 ...

最新文章

  1. 【EMC】EMC屏蔽设计
  2. vue+elementUI项目的踩坑~~持续更新
  3. 解决python2.x文件读写编码问题
  4. Python并发Gevent库(一)
  5. 最新 MSDN Library for Visual Studio 2008 SP1
  6. python 多进程multiprocessing进程池pool tensorflow-yolov3 报错 MemoryError
  7. C语言逗号运算符和逗号表达式基础总结
  8. 【VMware】宿主机连接wifi,虚拟机中的Linux系统配置连接wifi
  9. JVM垃圾回收机制GC详解
  10. Python字符串处理的8招秘籍
  11. Redis 入门文档
  12. 蝴蝶f8手机是鸿蒙系统,中华酷联御三家回归,从电信定制机到高端,你期待鸿蒙系统吗?...
  13. 【JZOJ4939】平均值 题解
  14. ffmpeg 合并下载m3u8流媒体
  15. 面试官最爱提的问题TOP10来自:北京人才市场报
  16. JAVA日志记录方法
  17. 深度linux安装防火墙,CentOS7安装iptables防火墙
  18. v-for和v-if与v-show能否一起使用
  19. ★简单明确( ̄︶ ̄)↗——百度网盘秒传链接教程(使用火狐浏览器)
  20. 视频学习:王桂林 C++ 基础与提高 - day 1

热门文章

  1. 计算机网络——阻塞IO、非阻塞IO、IO多路复用
  2. Glide源码阅读之工厂模式2【DiskCache.Factory】
  3. 新睿云电脑带你了解云电脑吃鸡怎么样?
  4. 自己制作白色背景证件照
  5. 基于ChatGPT 开发 apple 脚本
  6. 五大浏览器内核及并发数
  7. 华为云CDN Net Turbo开启智能加速新时代
  8. 如何视频剪辑制作?几个剪辑软件分享
  9. 王歆瑶20190905-2博客作业
  10. Ubuntu 几种常见乱码解决方法