CDN的原理(CDN是什么CDN的原理和作用什么)

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

CDN概念

CDN的全称是内容传送网络,中文叫内容分发网。

实际上,CDN的概念是由麻省理工学院的一个研究小组在1996年提出的,旨在提高互联网的服务质量。那么它是如何提高互联网服务质量的呢?

原理分析

我们知道,当我们使用域名访问一个网站时,我们实际上是通过网络将请求包(例如,Http请求)传输到一个服务器,比如在访问www . Baidu . com

首先,解析域名对应的IP地址(DNS域名解析)

然后Http请求包通过网络被路由到与该IP地址对应的服务器。

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

让让我们看看第一步:域名解析。

域名解析

有两种类型的域名解析:

将域名解析为IP地址

将一个域名解析为另一个域名。

实际上,它分析这个想法并不难。域名服务商购买域名后,我们需要映射一个IP地址,可以用Map来表示:{域名:IP}。

同时,我们也可以给域名起一个别名,比如www . Baidu . com 和test . Baidu . com 这种关系也可以用Map来表示:{域名:别名}。这里的别名在专业上叫做CNAME,我相信你对这个词很熟悉,就是这个意思。

域名解析,其实就是解析指定域名对应的IP地址或者域名的一个CNAME。

DNS系统负责域名解析。DNS服务接受外部请求并从请求中提取域名。

如果该域名对应于一个IP地址,则返回该IP地址,

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

发送方得到IP地址后,就完成了真正的请求调用。

其实DNS系统非常庞大,所以我赢了这里不赘述。大家都把它当成黑匣子。这个盒子的功能如上所述。这里用一个简单的图表来说明。

没有CNAME:

就CNAME而言:

注:在CNAME的案例中,我们可以发现CNAME实际上在域名解析过程中充当了中介(或代理)的角色,这是CDN实施的关键。

CDN原则

首先,CDN是为了提高互联网的服务质量。外行人的条款,它实际上是为了加快访问。

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

那么如何解决这个问题呢?其实想法很简单。百度应该在全国各地部署相同的服务器。这个专业叫做冗余。

想法很简单,但是实现起来比较麻烦。服务器上有两种资源:静态资源和动态资源。

静态资源:这些资源通常变化不大,比如图片、文章、css、javascript等等。

动态资源:这类资源通常在不同的时间被不同的用户访问,比如ftl、jsp等等。

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

如果你想了解三地五中心,你可以看看https://mp.weixin.qq.com/s/uGyGldbwmShDDPDau5pAPw,的这篇文章,这也是我自己写的。

那么有没有低成本的办法呢?是的,每台服务器上只部署静态资源。静态资源通常不会不涉及数据库,所以成本低,还能提高用户的访问速度。

这里介绍一下CDN的目的,那么如何达到这个目的呢?

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

CDN系统中存储静态资源的服务器性能和网速如何?

全国乃至全球CDN系统的服务器节点数量和部署情况。

第一点很好理解,第二点也应该大家都懂。如果有许多静态资源的服务器节点,以便每个用户都可以访问它们而不用长跑,那么自然这就是CDN系统的优势。

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

好了,那么现在的问题是,用户访问静态资源的时候,也是通过域名访问的,域名会被解析到某个IP地址。关键问题是,DNS系统在做域名解析时,如何解析出离用户最近的IP地址?

普通的DNS系统可以做,而且需要专门的DNS服务器,需要知道。

用户的当前位置

你还需要知道用户现在访问的域名对应了哪些IP地址,这些IP地址在哪里?

要解决第一个问题,用户的ip地址可以直接从用户身上提取的要求。比如这个ip地址解析到北京电信,上海移动等等。

谁来解决第二个问题?我们现在正在考虑CDN。CDN提供商必须知道他们的公司在哪里部署了机器,以及他们的IP地址,所以这个问题只能由CDN提供商来解决。CDN提供商将提供这种特殊的DNS服务器,我们称之为CDN专用DNS服务器。

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

当用户使用域名访问静态资源时(该域名称为加速域名在阿里CDN服务中),比如这个域名是image . Baidu . com 对应的是一个叫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服务器。

补充:

域名解析中有多种类型的记录,最常用的有:

答:域名对应一个IP地址。

CNAME:一个域名对应另一个域名。

NS:将子域名分配给其他DNS服务器进行解析。

摘要

通过上面的文章可以发现,CDN的实现原理是依赖于DNS的。因为我不是专门研究网络的,所以本文有不准确的地方请指出。创作不易,请多转发。