CDN 是什么

CDN(Content Delivery Network,内容分发网络),即全网内容加速服务。为了尽可能的避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定,由此,诞生了 CDN 加速服务。

CDN 的作用

利用遍布全球(全国,或企业自行规划的各大城市及区域)的加速节点,帮助企业将业务内容发布至最接近用户的边缘节点,使用户的请求能够就近得到快速响应,无需进行多次网络转发,避免请求受地域、带宽、服务器能力等因素影响导致的高延迟、低可用性等问题。

网站的传统访问过程

  1. 用户在浏览器中输入目标网站的 URL
  2. 浏览器向域名解析服务器(DNS,Domain Name System,域名系统,是因特网上域名和 IP 地址相互映射的一个分布式数据库)发出解析请求,获得此域名对应的 IP 地址
  3. 浏览器得到这个 IP 地址,向其对应的服务器发出访问请求
  4. 目标服务器对此作出响应,将数据回传至用户浏览器并显示出来

CDN 如何加速

与传统访问方式不同,CDN 网络则是在用户和服务器之间增加 Cache 层,将用户的访问请求引导到 Cache 节点而不是目标服务器站点,要实现这一目的,主要是通过接管 DNS 实现。

以腾讯 CDN 架构图为例:

由上图可见,使用 CDN 缓存后的网站访问过程演变为:

  1. 用户在浏览器中输入目标域名
  2. 浏览器向本地域名解析系统(Local DNS)发出解析请求
  3. 经过 DNS 递归查询,请求被转移至 Tencent DNS(GSLB,Global Server Load Balance,全局负载均衡)系统,此时还没有产生 Cache 层
  4. GSLB 返回最佳 CDN 接入节点的 IP,同时 Local DNS 缓存此接入节点(在此过程中,会根据客户端的 IP 地址,地理位置,入网类型电信还是网通,返回最佳接入节点)
  5. 用户对此 CDN 接入节点发起请求,CDN 网络经过内部路由,并转发请求至源服务器
  6. 源服务器返回响应的数据,CDN 节点将数据返回至 CDN 接入节点
  7. CDN 接入节点将数据返回给用户,同时缓存数据

CDN 节点缓存了数据,任何用户再次请求这一份数据时,CDN 缓存会直接返回,并不需要再由源服务器进行处理,这大大的加快了数据往返的速度,对于静态资源的加速尤为显著。即便请求动态资源,比如动态页面,其中也是有许多的静态资源是不会经常改变的,只要控制好缓存机制,也会有明显的加速效果。

CDN 网络的架构及应用

利用 CDN 网络,网站用户无需投资价值不菲的服务器、网络带宽及相应的人力成本,便能实现将网站内容发布到离终端用户距离最近、路由最短的网际边缘 Cache 节点,创造完美、快捷的网站使用体验。

一般,CDN 网络主要由中心节点、边缘节点两部分构成。最简单的 CDN 网络只需一台负责全局负载均衡的 DNS 和各节点一台 Cache 即可运行。 DNS 支持根据用户源 IP 地址解析不同的 IP,实现就近访问。为了保证高可用性,CDN 网管中心需要监控各节点的流量、健康状况。当一个节点的单台 Cache 承载数量不够时,才需要多台 Cache,多台 Cache 同时工作时,才需要负载均衡器,使 Cache 群协同工作。

CDN 中心节点

包括 CDN 网管中心和全局负载均衡 DNS 重定向解析系统,负责整个 CDN 网络的分发及管理。

CDN 网管中心

是整个 CDN 能够正常运转的基础保证,它不仅能对整个 CDN 网络中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测到系统中总的流量和各节点的流量,并保存在系统数据库中,使网管人员能够方便地进行进一步分析。一套完善的网管系统,允许用户按需对系统配置进行修改。

全局负载均衡 DNS

通过一组预先定义好的策略,将当时最接近用户的 Cache 节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在各地的所有 CDN 节点保持持续通信,搜集各节点的通信状态,确保不会将用户的请求分发到不可用、或不健康的 Cache 节点上。

CDN 边缘节点

主要指异地分发节点,由负载均衡设备(如果缓存也需要集群的话)、高速缓存服务器两部分组成。 负载均衡设备负责每个节点中各个 Cache 的负载均衡,保证节点的工作效率;同时还负责收集节点与周围环境的信息,保持与全局负载均衡 DNS 的通信,实现整个系统的负载均衡。

高速缓存服务器(Cache)

负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。通过全局负载均衡 DNS 的控制,用户的请求被透明地指向离他最近的节点,节点中 Cache 服务器就像网站的原始服务器一样,响应终端用户的请求。因其距离用户更近,故其响应时间才更快。

CDN 供应商

传统 CDN 供应商,市场份额较大的有:上海帝联科技、北京蓝汛通信技术、北京快网科技、上海网宿科技等。现巨型互联网公司(百度、阿里巴巴、腾讯)也加入了其中。由于巨型互联网公司的介入,云技术的发展,会在一定方面打压传统 CDN 供应商,小型公司会更青睐这些巨型互联网公司,但是对于大型公司,传统CDN厂商的优势明显。

CDN 的应用场景

以 PPTV 视频网站来说,同一时间,不同城市的人都在使用客户端观看。向众多用户提供内容是由一个专门的网络完成的,这个网络我们叫它内容分发网络(CDN)。

另外,CDN 加速应用主要应用在以下 5 种场景:

  • 网站静态加速:包括图片、CSS、JS 等静态文件的加速
  • 全站加速:静态加速与动态加速结合,智能路由调度实现业务 0 改动全面加速整个网站访问速度
  • 下载服务:大文件下载,如游戏安装包和素材,APK 更新等
  • 图片服务:运用于 UGC 类社交图片应用
  • 流媒体:包括视频点播、视频直播、音视频通信、安防监控

CDN 技术详解(DNS,GSLB,Cache)的更多相关文章

  1. 《CDN技术详解》 - CDN知多少?

    开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了.或者,知道思路也行,毕 ...

  2. CDN技术详解及实现原理

    CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精 ...

  3. CDN技术详解笔记

    1.影响网络传输的四个因素(1)“第一公里”:网站服务器接入互联网的链路所能提供的带宽.(2)“最后一公里”:用户接入带宽.(3)对等互联关口:不同网络之间的互联互通带宽.(4)长途骨干传输:首先是长 ...

  4. CDN技术详解(七)

    动态内容加速服务的实现 随着Web2.0的兴起,产生了动态网页.个性化内容.电子交易数据等内容的加速,这些就涉及了动态内容加速技术. 静态内容的加速,都是对于表现层的加速,对于动态页面等内容的加速,则 ...

  5. CDN技术详解

    CDN,全称为Content DeliveryNetwork,中文意为"内容分发网络"".通过将网络内容发布到最靠近用户的『边缘节点』,使不同地区的用户在访问相同页面.图 ...

  6. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  7. DNS技术和NAT技术详解

    DNS技术和NAT技术详解一.DNS(Domain Name System)1.什么是DNS2. 了解域名3.域名解析过程4.使用dig工具分析DNS过程5.浏览器输入URL后发生什么事?二.ICMP ...

  8. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  9. <转>详解DNS的常用记录(上):DNS系列之二

    详解DNS的常用记录(上) 在上篇博文中,我们介绍了DNS服务器的体系结构,从中我们了解到如果我们希望注册一个域名,那么必须经过顶级域名服务器或其下级的域名服务器为我们申请的域名进行委派,把解析权委派 ...

随机推荐

  1. 涵涵和爸爸习惯养成进度表(三)(June 25 - )

    规则说明 23天内,没有哭脸,不超过三个无表情脸,可以给一个奖励(动画书等) 涵涵违反规则,在爸爸和妈妈都同意的情况下,可以给无表情脸 爸爸违反规则,在妈妈和涵涵都同意的情况下,可以给无表情脸 获奖记 ...

  2. IOS设置导航栏字体大小及颜色

    方法一: 自定义视图,定义一个lable,相关属性在lable里设置 核心方法: self.navigationItem.titleView = titleLabel; 方法二:用系统方法直接设置 [ ...

  3. Android 图片浏览器 从原来位置放大至全屏显示

    android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...

  4. Android深度探索--HAL与驱动开发----第五章读书笔记

    第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...

  5. time元素和datetime、pubtime属性

    time:对一个时间进行标识 <time datetime="2012-12-24">2012-12-24</time> datetime:时间的值 pub ...

  6. spring 包下载地址

    留着,以备不时之需: http://repo.spring.io/libs-release-local/org/springframework/spring/

  7. 初学SQL常用到的一些指令

    一.库 查看有哪些库:show databases; 进入某个库:use 库名; 新增库:create database atm; (atm为库名) 删除库:drop database if exis ...

  8. php 使用 curl 发送 post 数据

    作为第三方开发商,经常会需要调用平台接口,远程调用,就要用到curl,其实质就是叫调用的方法与用到的参数以http post的方式发送至平台服务器. 简单的例子: $url = 'http://'; ...

  9. 《深入浅出Node.js》第7章 网络编程

    @by Ruth92(转载请注明出处) 第7章 网络编程 Node 只需要几行代码即可构建服务器,无需额外的容器. Node 提供了以下4个模块(适用于服务器端和客户端): net -> TCP ...

  10. Python 基礎 - 集合的使用

    集合是一個無序的,不重複的數據組合,主要的作用如下 去重,把一個列表變成集合,就會自動去重了. 關係測試,測試二組數據之前的交集.差集.聯集等關係. 接下來我們來實作看看什麼是去重 #!/usr/bi ...