文章目录

  • 前言
  • 一、什么是CDN
  • 二、CDN与DNS
    • DNS的执行流程
    • DNS与CDN的关系
  • 三、CDN的应用场景

前言

随着网络的发展,产生了很多大型的互联网公司,例如阿里、京东、腾讯等,假设某公司的总部在北京,他们的服务器部署在了北京,北京的用户访问肯定是比较快的,而广州、海南等地区访问存在着一定的延时,甚至达到延时达到秒级别,这种情况用户就不能接受了,怎么提高不同地区用户的访问速度呢?这就是本章讲解的内容 – CDN应用加速。

一、什么是CDN

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。

同样用某公司的网购物流系统举个例子来说明CDN是干啥的:

假设某公司只有北京一个物流基地,分别有两个买家下了订单,一个买家在石家庄,由于北京和 石家庄的距离很近,当天上午订单发出晚上就到了石家庄,买家1很满意;但是另一个买家在兰州距离比较远,假设发出订单后第三天还没收到货,买家不高兴了不买了,退了订单在线下买了,这让用户的体验性太差了。于是该公司分别在每个城市都建立了物流基地,提前把货物放到了每个城市的仓库中,该城市的人购买后直接由最近仓库发货,当天到达手中,用户觉的很满意,于是每次都在该公司购物。

CDN中有两个概念:源站和边缘服务器。源站指的是没有加入CDN之前的服务器,类似于图中公司总部,而边缘服务器指的是实际提供给用户的离用户最近的服务器,类似于图中多个仓库就是CDN的多个边缘服务器,边缘服务器存放了一些应用的静态文件等,除此之外的post/put等操作请求还是去源站,类似于我们把货物放在了不同的仓库,但是发起订单修改订单等订单操作和数据还是放在了公司总部。

二、CDN与DNS

DNS的执行流程

DNS大家应该都比较熟悉,域名解析系统,正常情况下我们访问某网站都是输入的对应的网址,因为网址的起名是有特殊意义的名称比较容易记住,要是让我们去记住各个网站的IP那是不可能的,就算电话号都是除了自己的其它的都记不住,更别说跟我们无关的IP地址了,DNS则负责将我们输入的网址解析成对应的IP地址。
正常情况下DNS的执行有下面几步操作:

  1. 客户端在本机的hosts文件和hosts缓存中查找该域名的IP地址。
  2. hosts中没有查找到就到Local DNS去查找该域名对应的IP地址。
  3. Local DNS也没有查找到,就继续上级Root DNS、顶级DNS中去查找域名对应的IP地址(这里肯定能查到,查不到就真没有这个网址了),找到了对应的IP发送给客户端同时将其缓存在本地。
  4. 客户端获取了IP地址后向对应的服务器发送请求获取数据。

DNS与CDN的关系

想要知道DNS和CDN的关系,需要先知道DNS的记录类型,我们看一下DNS中的两种记录类型:A记录与CNAME记录,其它的记录类型感兴趣的可以自行百度去了解。

  • A记录: 通常我们认为输入域名后DNS直接将其解析为了IP地址,这种记录类型就是A记录,A记录是用来指定域名的IP地址的,当我们输入域名后DNS直接引导到了对应IP地址的服务器,但是这样做是不安全的,直接暴露了服务器的IP地址容易被攻击。
  • CNAME: CNAME是将域名与另一个域名绑定在了一起,例如有个域名www.aaa.com将其绑定到了www.bbb.com,当访问www.aaa.com的时候DNS将其解析到了www.bbb.com,而这个www.bbb.com就是CDN服务的域名,但是浏览器显示的还是www.aaa.com。

此时还需要了解两个概念:SLB(本地负载均衡系统)和GSLB(全局负载均衡系统),本地负载均衡系统就是我们常说的服务负载均衡系统(例如在机房两台服务器都部署了相同的应用做负载均衡);而全局负载均衡系统 (全局负载均衡系统中就有一种是基于CDN实现的) 指的是DNS在域名解析过程中通过用户本地DNS地址获取用户所在位置,将其引导向举例最近的本地负载均衡系统,简单的说全局负载均衡系统是地区之间的负载均衡。

如图,一个海南的用户通过www.aaa.com访问某网站,通过DNS的CNAME最终导向了www.bbb.com(CDN服务器地址),CDN的全局负载均衡系统通过一些列复杂的算法发现用户在海南,返回就近的本地负载均衡系统(海南的负载均衡系统),然后用户直接去访问海南的服务节点,这样访问起来比较快。

三、CDN的应用场景

一般情况下在以下场景会用到CDN加速:

  • 网站的前端项目,现在的项目基本上都是前后端分离的了,前端项目包含了一堆HTML、CSS样式、JS脚本和网站图片等文件,这些静态文件一般是不会发生POST修改的,只是GET请求就可以获取。
  • 应用商店项目,现在手机上都会自带一个应用商店,应用商店里面有很多应用,一般这些应用也是不会改变的,而且应用比较大,例如王者荣耀好几个G,直接访问源站就很慢,所以将这些应用通过CDN放在了不同的边缘服务器中。
  • 视频网站,现在市场上有很多视频网站例如B站、抖音等,这些视频文件也是比较大的,我们看视频的时候如果直接访问源站可能就经常转圈圈了,所以将其放到了CDN中不同的边缘服务器。

总结:用到CDN的时候一般就是一些静态不会改变的文件,而且文件比较大(当然小文件也可以),当用户直接通过源站访问由于地域问题网络延时导致的请求很慢,此时就可以将这些文件通过CDN分发到不同的边缘服务器。

一文了解CDN应用加速相关推荐

  1. 从买域名,服务器到cdn分发,加速搭建网站空间最全教程(下)

    我们接着上篇讲,之前我们已经建好一个可以正常使用的一个网站了, 但是还有很多我们可以进一步完善的地方,比如说开通https 使得网站安全访问.不会因为是http去提示用户:您访问的网站,正在使用不安全 ...

  2. php 静态 动态 cdn 加速,CDN静态加速跟动态加速的区别,动态加速好还是静态加速好?...

    CDN做为内容分发技术,其核心原理就是将内容缓存到离用户最近的节点上,实现内容分发加速,这里内容主要分为两种,一种是静态内容,一种是动态内容.首先,对静态资源,CDN的加速效果是最好的,因为文件本身没 ...

  3. cnd服务器维护游戏,cdn可以加速服务器游戏

    cdn可以加速服务器游戏 内容精选 换一换 某游戏网站目前已购买OBS桶服务,并存放了大量游戏软件.图片等文件在OBS中.随着用户不断增长,游戏下载.图片加载都存在响应较慢的问题,特别是离文件存放区域 ...

  4. php 静态 动态 cdn 加速,CDN动态加速 静态加速区别

    看完这篇文章,在我看来动态cdn加速还是有点不靠谱的. 还得搭建多地方的服务器. CDN做为内容分发技术,其核心原理就是将内容缓存到离用户最近的节点上,实现内容分发加速,这里内容主要分为两种,一种是静 ...

  5. CDN全站加速助力企业云上升级

    [2018云栖大会南京分会飞天技术汇专场,阿里巴巴高级技术专家魏晋带来题CDN全站加速助力企业云上升级的演讲.主要内容是结合实际客观案例详细解读全战加速产品如何对动静态业务进行的加速,结合安全WAF等 ...

  6. 多节点CDN缓存加速系统wdcdn2.4版本发布(20111213)

    多节点CDN缓存加速系统wdcdn2.4版本发布(20111213) Wdcdn是一套基于Linux+apache+squid架构开发的CDN缓存加速系统及管理系统 可帮助大中小站长或大中小企业低成本 ...

  7. CDN网站加速的原理和流程

    CDN的全称是Content Delivery Network,即内容分发网络  CDN的通俗理解就是网站加速,CPU均衡负载,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速 ...

  8. 盘点国内外十大免费CDN网站加速服务

    盘点国内外十大免费CDN网站加速服务 核心提示: 除了传统的CDN厂商之外,云服务商也开始进驻该领域,市场上可供选择的免费的CDN还是比较多的,在此罗列出十大免费CDN,供寻找免费CDN加速服务的朋友 ...

  9. 二. 应用加速(微服务架构设计的cdn访问加速)

    这里写目录标题 1. CDN的产生及作用 1. 2. CDN(Content Delivery Network),即内容分发网络 2.访问源站的过程(DNS) 2.1DNS的记录类型(以阿里云为例) ...

最新文章

  1. union-find算法分析(2)
  2. 2019 GDUT Rating Contest II : Problem G. Snow Boots
  3. Linux之移动复制和删除
  4. mysql blob key length_mysql提示used in key specification without a key length
  5. NET流行高性能JSON框架-Json.NET
  6. python决策树sklearn_python利用sklearn包编写决策树源代码
  7. day27 java的集合(5) HashMap集合和与Hashtable的区别
  8. 小程序获取用户手机号_借助云开发5行代码获取小程序用户的手机号
  9. __name__的意义与作用
  10. java字节流——简单实现论文查重功能
  11. c语言 计算平均分
  12. 【hadoop生态之Hive】Hive的DML数据操纵语言【笔记+代码】
  13. Java 操作 ElasticSearch
  14. http://wenku.baidu.com/view/d6433106a6c30c2259019e63.html
  15. HDU 1114 Piggy-Bank 猪仔储钱罐(完全背包)
  16. 功放限幅保护_限幅器在音响系统中限幅阈值的计算方法
  17. uniapp下拉框组件
  18. Autofill简单使用
  19. 计算机管相关论文,计算机管理论文
  20. 网络offload之TSO、GSO、LRO、GRO

热门文章

  1. Springboot接收前端的Json但是为null
  2. 太爽了!花了6个月18天,达内Java培优百度网盘
  3. 【达内课程】异常Exception(上)
  4. Rational 最新软件试用下载地址
  5. L1 - Learn 8 Phrasal Verbs for opening: pop open, peel off, flip up…
  6. dm9000 晶振测不准
  7. 开源许可协议 Open Source License
  8. WRFDA教程:3DVar同化卫星辐射率资料
  9. 冯绍峰,如果你爱她,记得不要把名字倒过来讲!
  10. Axure交互样式的简单使用介绍