您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

程序员要搞明白CDN,这篇应该够了

时间:2020-01-29 15:47:22  来源:  作者:

最近在了解边缘计算,发现我们经常听说的CDN也是边缘计算里的一部分。那么说到CDN,好像只知道它中文叫做内容分发网络。那么具体CDN的原理是什么?能够为用户在浏览网站时带来什么好处呢?解决这两个问题是本文的目的。

 

CDN概念

CDN全称叫做“Content Delivery Network”,中文叫内容分发网络

 

实际上CDN这个概念是在1996年由美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。那么它到底是怎么改善互联网服务质量的呢?

 

原理分析

我们知道,当我们使用域名访问某一个网站时,实际上就是将请求包(以Http请求为例)通过网络传输给某台服务器,比如访问“www.baidu.com”时:

  1. 首先解析出该域名所对应的IP地址(DNS域名解析)
  2. 然后将Http请求包通过网络路由到IP地址所对应的服务器

 

我们通常说“服务器的IP地址”,这其实不太准确,IP地址是和网卡绑定的,一个服务器可以有多个网卡,也就是可能有多个IP地址。

 

我们先来看第一步:域名解析

 

域名解析

解析域名分为两种:

  1. 将一个域名解析为一个IP地址
  2. 将一个域名解析为另外一个域名

 

其实解析思路不难,我们在域名服务商购买了一个域名之后,需要去映射一个IP地址,可以用Map来表示这个关系:{域名:IP}。

 

同时我们也可以给某个域名取一个别名,比如“www.baidu.com”取一个别名“test.baidu.com”,这种关系也可以用Map来表示:{域名:别名}。这里的别名专业一点叫做CNAME,相信大家对这个词有点眼熟,它就是这个意思。

 

域名解析,实际上就是解析出指定域名所对应的IP地址,或者该域名的一个CNAME。

 

而域名解析是由DNS系统来负责的,DNS服务接受外部请求,从请求里提取域名,

  • 如果这个域名对应的是IP地址,则返回这个IP地址,
  • 如果这个域名对应的是CNAME,则继续查找CNAME域名的IP地址,然后将该地址返回给请求发送者。

 

请求发送者拿到IP地址之后,完成真正的请求调用。

 

实际上DNS系统是非常庞大的,这里不去多将,大家把它当作一个黑盒子,这个盒子的作用就是上文所描述的,这里用一个简单的图来表示一下。

 

没有CNAME的情况:

程序员要搞明白CDN,这篇应该够了

 

 

有CNAME的情况:

程序员要搞明白CDN,这篇应该够了

 

 

特别注意:在有CNAME的情况下,我们可以发现,CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键。

 

CDN原理

首先CDN是为了改善互联网的服务质量通俗一点说其实就是提高访问速度。

 

假设百度网站现在只有一台服务器,现在有一个人在上海访问百度,如果该服务器也在上海,那么通常来说访问比较快,如果该服务器在拉萨,那么相对而言访问就比较慢了。那么这个问题的根本原因是网络传输是依赖于网线的,网线越长,那么时间肯定就越久。

 

那么怎么解决这个问题呢?其实思路很简单,百度在全国各地都部署一模一样的服务器就行了,专业一点叫冗余。

 

思路很简单,但实现还是比较麻烦的,服务器上的资源分为两种:静态资源动态资源

 

  • 静态资源:这种资源通常是很少变动的,比如图片,视频,cssJAVAscript等等
  • 动态资源:这种资源不同用户不同时刻访问通常是不一样的,比如ftl,jsp等等。

 

那么如果百度要在全国各地都部署服务器,如果说每个服务器上都有相同的动态资源,那么可能还需要配置相应的数据库,因为动态资源所记录的信息通常会存储在数据库中,那么这就涉及到了数据同步等等问题,这会导致成本很高,这种做法专业一点其实就是集群,而目前来说集群架构最多是三地五中心,不是说全国多地集群不可能,主要是成本太高。

 

大家想了解三地五中心的,可以看https://mp.weixin.qq.com/s/uGyGldbwmShDDPDau5pAPw这篇文章,也是本人写的。

 

那么有没有成本比较低的方式呢,有,就是在每个服务器上只部署静态资源,静态资源通常不涉及到数据库,所以成本也比较低,而且也能提高用户的访问速度。

 

到这里,介绍了CDN想要达到的目的,那么怎么达到这个目的呢?

 

现在如果要比较CDN系统,我们可以考虑两点:

  1. CDN系统中存储静态资源服务器的性能以及网速怎么样。
  2. CDN系统中全国甚至全球范围内服务器节点的数量以及部署情况。

 

第一点很好理解,第二点大家应该也能理解了,如果静态资源的服务器节点很多,能够让每个用户在访问这些静态资源时都不用“跑很远的路程”才能获取到,那么自然这是CDN系统的优点。

 

公司看到了这种需求,所以现在其实有很多CDN供应商,比如阿里,腾讯等等都有自己的CDN服务。只要你自己的系统接入了这些大厂所提供的CDN服务,你把自己的静态资源传给CDN服务,那么这些静态资源将自动的分布到全世界各地去。

 

好,那么现在的问题是,用户在访问静态资源时也是通过域名来访问的,域名会被解析成某一个IP地址,关键的问题就是,DNS系统怎么在做域名解析时,解析出来一个离用户最近的一个IP地址呢

 

普通的DNS系统是做不到的,需要一个特殊的DNS服务器,这个特殊DNS需要知道

  1. 用户当前所在位置
  2. 还需要知道用户现在访问的这个域名对应哪些IP地址,以及这个IP地址分别在哪?

 

对于第一个问题好解决,直接从用户请求里提取出用户的ip地址,比如这个ip地址被解析为北京电信、上海移动等等。

 

第二个问题由谁来解决,我们现在考虑的是CDN,CDN提供商肯定知道他们公司在哪些地方部署了机器以及它们的IP地址,所以这个问题只能有CDN提供商来解决,CDN提供商会提供这个特殊的DNS服务器,我们叫做 CDN专用DNS服务器

 

这样的话,只要用户在使用某个域名访问静态资源时,如果用户直接配置自己电脑的DNS地址为CDN专用DNS服务器。那么自然解决了问题,但是我们需要考虑的时,我们不能要求世界上所有的用户都去修改自己电脑的DNS地址。所以这个时候就要利用DNS中的CNAME了。

 

用户使用某个域名来访问静态资源时(这个域名在阿里CDN服务中叫做“加速域名”),比如这个域名为“image.baidu.com”,它对应一个CNAME,叫做“cdn.ali.com”,那么普通DNS服务器(区别CDN专用DNS服务器)在解析“image.baidu.com”时,会先解析成“cdn.ali.com”,普通DNS服务器发现该域名对应的也是一个DNS服务器,那么会将域名解析工作转交给该DNS服务器,该DNS服务器就是CDN专用DNS服务器。CDN专用DNS服务器对“cdn.ali.com”进行解析,然后依据服务器上记录的所有CDN服务器地址信息,选出一个离用户最近的一个CDN服务器地址,并返回给用户,用户即可访问离自己最近的一台CDN服务器了。

 

程序员要搞明白CDN,这篇应该够了

 

 

补充:

在对域名解析时有多种类型的记录,最常用的比如:

  • A记录:一个域名对应一个IP地址
  • CNAME:一个域名对应另外一个域名
  • NS:将子域名指定其他DNS服务器解析

 

程序员要搞明白CDN,这篇应该够了

 

 

总结

通过上面的文章我们可以发现,CDN的实现原理依赖于DNS,因为本人不是专门搞网络的,所以文中如果有不准确的地方,还请各位大佬指出。创作不易,还请多多转发



Tags:   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
一、HTTP Begin1、什么是 HTTPHTTP 是基于文本传输的协议,它位于 OSI 七层模型的应用层(Application) ,HTTP 是通过客户端向服务器发送请求,服务器响应请求来进行通讯,截止到目前...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
平时大家在用PS的时候,速度一直提不上去了该怎么办?那么下面这120个由大神们总结的PS技巧,你务必要学会,能让你的设计更高效!(即使学不会也收藏起来,早晚会用到)这120款技巧覆盖了PS...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
基金投资作为低风险偏好者的最爱一样面临投资大逻辑,否则基民也会在不断起起伏伏的行情中迷茫和困惑。虽然我写过很多关于投资理念的文章,不过在信息泛滥的时代,越宽泛和理念的...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
概述Go语言作为一门开源的编程语言,以简洁、快速、安全著称。尤其在高性能的分布式服务器领域得到广泛应用。技多不压身,在学习过程中记录下来,以备后续参考,希望对有同样需求的...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
我们都知道现在mysql开源数据库是我们现在小型网站使用较多的免费数据库,我们在创建数据表时容易出现表名出现有问题需要修改,今天在这里教大家利用Sql语句来修改表名的方法:本...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
作为一个后端开发人员来说,微信开发已经是必备的技能之一了,今天小编就来分享一个相关的类库shenghui0779/gochat(以下简称wechat)。这个类库简单易用,看源码的时候目录结构一...【详细内容】
2020-11-12     点击:(4)  评论:(0)  加入收藏
MGR简介MySQL Group Replication,简称MGR,它是MySQL官方推出的基于paxos分布式一致性协议的状态机复制,实现了分布式下数据的最终一致性。同时MGR提供了高可用、高扩展、高可靠...【详细内容】
2020-11-12     点击:(4)  评论:(0)  加入收藏
服务器意外断电后,RAID控制器宕机如下图所示,使用BMC管理口进iKVM,在服务器启动的过程中可以看到如下提示 解决办法:1、开机过程中按提示按ctrl+R,进RAID管理界面 2、将Boot Mo...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
小红书种草推广已经是重要的网络推广方式之一,做小红书推广有最重要的两点。...【详细内容】
2020-11-12     点击:(5)  评论:(0)  加入收藏
IPSec VPN高可用性解决方案需要用到DPD、RRI、路由、SLA等技术组合使用才能做到简单的高可用性,缺点是使用场景单一且配置繁琐。由于IPSec VPN的局限性,思科基于IPSec VPN和动...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
民间借贷作为民事案件中最为常见的纠纷之一,其出现的频率相当高、案件类型颇为繁多。为此,笔者特整理了以下最为常见的十种民间借贷案件类型,并分别收集了相关案例以供大家阅...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
移动硬盘怎么选?防水、防震、抗冲击,高速读写最重要,这样才能保证数据的安全和快速读写。 闪迪至尊极速移动固态硬盘,1T版,目前价格1199,虽然价格要比普通移动硬盘贵一些,但是品质...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
由iPhone带头,越来越多的手机把3.5mm耳机孔去掉了之后。用户们就被半逼迫着购买了无线耳机,或者typec/lighting借口耳机。但是对于用户已经拥有的那些3.5mm耳机怎么办呢?如果你...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
近日,我在网上想要买一块硬盘,因为我的电脑硬盘内存太小了,当我打开某宝的时候,我搜索电脑硬盘的时候,我发现电脑硬盘有几种颜色,分别是:黑盘、蓝盘,绿盘、那不同颜色的硬盘要怎么选...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
选固态硬盘核心看5点:接口、闪存颗粒(类型和大小)、主控、缓存、价格。 1.电脑接口决定支持的固态硬盘类型,接口不匹配性能再好也白搭; 2.闪存颗粒决定固态硬盘的容量、性能和质...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
今天遇到一件奇怪的事情!因为单位升级到WIN10,所以最近一直在重装系统,工作量很大,先是备份资料,重装系统,还原资料,配置计算机名,配置IP,配置邮箱,安装打印机驱动,一大堆的事情,还好这W...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
不管是固态硬盘还是机械硬盘,分区都是一样的操作。1、首先按照系统版本(32位或64位,可在此电脑,右键,属性中查看)下载一个分区助手diskgenius,下载完成安装上并打开diskgenius。 2...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
随着电商平台的兴起,很多小伙伴在购买电脑时,都会选择网上选购配件,买好后开始自己组装,却发现开不了机、没声音、USB不能用等问题,其实这是因为你电脑跳线没接对或者没有接。跳...【详细内容】
2020-11-12     点击:(3)  评论:(0)  加入收藏
今天给大家说说电脑文件夹的那些事。我们电脑一般需要根据硬盘的数量分成几个盘,点击这里可以了解硬盘分区,而系统一般是放在 C 盘的,所以今天也主要说说 C 盘的文件夹中哪些东...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
智能手机系统,就存在着这样一个问题:随着使用越久,残存的垃圾就越多,磁盘的存储空间都会由于删除等操作出现一些碎片。还有一点是安卓手机是电子产品,使用得越久,器件会存在老化的...【详细内容】
2020-11-12     点击:(2)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条