目录

cdn

原文:https://www.zhihu.com/question/37353035/answer/175217812

定义

全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络

基本思路

尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上

目的

解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。

控制时延无疑是现代信息科技的重要指标,CDN的意图就是尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的连贯性。

CDN就是扮演者护航者和加速者的角色,更快准狠的触发信息和触达每一个用户,带来更为极致的使用体验。

工作过程

使用CDN会极大地简化网站的系统维护工作量,网站维护人员只需将网站内容注入CDN的系统,通过CDN部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商、跨地域的用户覆盖。由于CDN将内容推送到网络边缘,大量的用户访问被分散在网络边缘,不再构成网站出口、互联互通点的资源挤占,也不再需要跨越长距离IP路由了。

CDN是如何工作的呢?让我们先看看没有CDN服务时,一个网站是如何向用户提供服务的。

今天我们看到的网站系统基本上都是基于B/S架构的。B/S架构,即Browser-Server(浏览器 服务器)架构,是对传统C/S架构的一种变化或者改进架构。在这种架构下,用户只需使用通用浏览器,主要业务逻辑在服务器端实现。B/S架构,主要是利用了不断成熟的WWW浏览器工作,结合浏览器的多种Script语言(VBScript、JavaScript等)和ActiveX等工作,在通用浏览器上实现了C/S架构下需要复杂的软件才能实现的强大功能。

用户通过浏览器等方式访问网站的过程如图1-2所示。

https://gitee.com/lienhui68/picStore/raw/master/null/20200913155008.png

  1. 用户在自己的浏览器中输入要访问的网站域名。
  2. 浏览器向本地DNS服务器请求对该域名的解析。
  3. 本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
  4. 本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
  5. 浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址。
  6. 浏览器向服务器请求内容。
  7. 服务器将用户请求内容传送给浏览器。

在网站和用户之间加入CDN以后,用户不会有任何与原来不同的感觉。最简单的CDN网络有一个DNS服务器和几台缓存服务器就可以运行了。一个典型的CDN用户访问调度流程如图1-3所示。

https://gitee.com/lienhui68/picStore/raw/master/null/20200913155032.png

  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. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

DNS服务器根据用户IP地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。

使用CDN服务的网站,只需将其域名解析权交给CDN的GSLB(global server load balance)设备,将需要分发的内容注入CDN,就可以实现内容加速了。

服务模式

简单地说,CDN是一个经营策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。

通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

举例说明

国内访问量较高的网站、直播、视频平台,均使用CDN网络加速工作,虽然网站的访问巨大,但无论在什么地方访问都会感觉速度很快。而一般的网站如果服务器在网通,电信用户访问很慢,如果服务器在电信,网通用户访问又很慢。

通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的cache服务器内,通过DNS负载均衡的工作,判断用户来源就近访问cache服务器取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度,如同提供了多个分布在各地的加速器,以达到快速、可冗余的为多个网站加速的目的。

CDN服务最初用于确保快速可靠地分发静态内容,这些内容可以缓存,最适合在网速庞大的网络中存储和分发,该网络在几十多个国家的十几个网络中的覆盖CDN网络服务器。由于动态内容必须通过互联网来传输,因此要提供快速的网络体验。如今的CDN可谓是大文件、小文件、点播、直播、动静皆宜!

https://gitee.com/lienhui68/picStore/raw/master/null/20200913161444.png

主要特点

  1. 本地Cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性

  2. 镜像服务消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。

  3. 远程加速 远程访问用户根据DNS负载均衡工作 智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度

  4. 带宽优化 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。

  5. 集群抗攻击 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。

关键工作

https://gitee.com/lienhui68/picStore/raw/master/null/20200913161708.png

内容发布

它借助于建立索引、缓存、流分裂、组播(Multicast)等工作

内容路由

它是整体性的网络负载均衡工作,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应;

内容交换

它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等工作,智能地平衡负载流量;

性能管理

它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。

适用范围

一般来说以资讯、内容等为主的网站,具有一定访问体量的网站

例如

  1. 资讯网站、政府机构网站、行业平台网站、商城等以动态内容为主的网站

  2. 论坛、博客、交友、SNS、网络游戏、搜索/查询、金融等提供http下载的网站

  3. 软件开发商、内容服务提供商、网络游戏运行商、源码下载等有大量流媒体点播应用的网站

  4. 拥有视频点播平台的电信运营商、内容服务提供商、体育频道、宽频频道、在线教育、视频博客等

国内主要的CDN服务提供商

https://www.xjh.me/575.html/amp

Q & A

  • CDN加速是对网站所在服务器加速,还是对其域名加速

    CDN是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访客访问加入CDN的域名获得加速效果,访问未加入CDN的域名,或者直接访问IP地址,则无法获得CDN效果。

  • CDN和镜像站点比较有何优势

    • CDN对网站的访客完全透明,不需要访客手动选择要访问的镜像站点,保证了网站对访客的友好性。  
    • CDN对每个节点都有可用性检查,不合格的节点会第一时间剔出,从而保证了极高的可用率,而镜像站点无法实现这一点。  
    • CDN部署简单,对原站基本不做任何改动即可生效。
  • CDN和双线机房相比有何优势

    常见的双线机房只能解决网通和电信互相访问慢的问题,其它ISP(internet service provider譬如教育网,移动网,铁通)互通的问题还是没得到解决。   而CDN是访问者就近取数据,而CDN的节点遍布各ISP,从而保证了网站到任意ISP的访问速度。另外CDN因为其流量分流到各节点的原理,天然获得抵抗网络攻击的能力。

    抗攻击cdn之所以能有效防止ddos攻击,主要在于它的智能化。当有ddos攻击时,它会将整个系统被攻击的流量分散开来。一是节省了服务器的压力,二是增强了网站的工具难度。三是为服务器管理人员提供了补救的时间。所以使用这种工作可以有效的防止ddos攻击,增强网站的安全性能。

  • CDN使用后,原来的网站是否需要做修改,做什么修改

    一般而言,网站无需任何修改即可使用CDN获得加速效果。只是对需要判断访客IP程序,才需要做少量修改。

  • 为什么我的网站更新后,通过CDN后看到网页还是旧网页,如何解决

    由于CDN采用各节点缓存的机制,网站的静态网页和图片修改后,如果CDN缓存没有做相应更新,则看到的还是旧的网页。

    为了解决这个问题,CDN管理面板中提供了URL推送服务,来通知CDN各节点刷新自己的缓存。  

    在URL推送地址栏中,输入具体的网址或者图片地址,则各节点中的缓存内容即被统一删除,并且当即生效。  

    如果需要推送的网址和图片太多,可以选择目录推送,输入 http://www.kkk.com/news 即可以对网站下news目录下所有网页和图片进行了刷新。

  • 能不能让CDN不缓存某些即时性要求很高的网页和图片

    只需要使用动态页面,asp,php,jsp等动态工作做成的页面不被CDN缓存,无需每次都要刷新。或者采用一个网站两个域名,一个启用CDN,另外一个域名不用CDN,对即时性要求高的页面和图片放在不用CDN的域名下

  • 网站新增了不少网页和图片,这些需要使用URL推送吗

    后来增加的网页和图片,不需要使用URL推送,因为它们本来就不存在缓存中。

  • 网站用CDN后,有些地区反映无法访问了,怎么办

    CDN启用后,访客不能访问网站有很多种可能,可能是CDN的问题,也可能是源站点出现故障或者源站点被关闭,还可能是访客自己所在的网络出现问题,甚至我们实际故障排除中,还出现过客户自己计算机中毒,导致无法访问网站。   客户报告故障时,可随时联系我们24小时工作部进行处理。

  • 哪些情况不适用于CDN

    https://gitee.com/lienhui68/picStore/raw/master/null/20200913161945.png

    备注:此类极端状况不建议您使用CDN服务