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. FreeCAD鼠标操作指南

    鼠标控制模式 跳转至: 导航. 搜索 freeCAD鼠标的控制模式由多个命令构成,用于三维空间的视觉导航和控制显示对象.freecad支持多个鼠标导航方式.默认的导航方式是被称为“CAD导航”,非常简 ...

  2. Java IO流

    File类 ·java.io.File类:文件和目录路径名的抽象表示形式,与平台无关 ·File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入 ...

  3. oc swizzling 真的好用

    Objective-C的hook方案(一):  Method Swizzling 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写.和借助类别重名方法暴力抢先之外,还有更加灵活 ...

  4. JAVA双列集合HashMap

    HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类,   Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...

  5. 填补Resources和WWW加载本地资源的坑

    总的来说Resources和WWW加载本地资源坑比较多,大多与路径有关. 下面代码构成了一个路径的预读模块: 此模块主要解决的坑是:Resources或WWW加载本地的文件夹中的多个文件时,无法获取文 ...

  6. Android四大组件-Activity

    http://android.tgbus.com/Android/androidnews/201204/419485.shtml

  7. [Linux学习]Shell脚本(1)--函数,输入,if判断(持续更新)+删除空行 +保存当前路径

    1)接收输入 check_status() { echo --Check hi_repo status is ok? y or n read var if [ "$var" != ...

  8. 【转】java中volatile关键字的含义

    java中volatile关键字的含义   在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...

  9. DELL vostro V5460 装mSATA 半高SSD硬盘后装win8.1系统

    1.介绍 DELL vostro V5460的超极本性能虽然不是那么好,但的确是我觉得样子最好看的一款.满足了,轻,薄.如果是红色的,则很适合女生用. 2.缺点 这款笔记本最大的缺点,就是有的无线网卡 ...

  10. cell 内部 设置width 总不对

    今天 在Cell 里设置屏幕宽 如果 在layoutSubviews 使用 self.width(自己写的分类) 或者 self.view.size.width  都可以,这里 4 4s 5 5s 都 ...