一文了解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分发到不同的边缘服务器。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值