cdn 系统化认识
Posted Valar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cdn 系统化认识相关的知识,希望对你有一定的参考价值。
一、名词解释
Origin Server源站:做 CDN 之前的客户真正的服务器。
User:访问者,也就是要访问网站的网民。
Last Mile:最后一公里,也就是网民到他所访问到的 CDN 服务器之间的路径。
CNAME记录:它是一个别名记录( Canonical Name );当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪 到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。
CNAME域名:CDN的域名加速需要用到CNAME记录,在阿里云控制台配置完成CDN加速后,您会得到一个加速后的域名,称之为CNAME域名(该域名一定是.kunlun.com), 用户需要将自己的域名作CNAME指向这个.kunlun.com的域名后,域名解析的工作就正式转向阿里云,该域名所有的请求都将转向阿里云CDN的节点。
DNS:DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。比如:上网时输入的www.baidu.com会自动转换成为220.181.112.143
边缘节点:也称CDN节点、Cache节点等;是相对于网络的复杂结构而提出的一个概念,指距离最终用户接入具有较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连接速度。其作用是将访问量较大的网页内容和对象保存在服务器前端的专用cache设备上,以此来提高网站访问的速度和质量。
Cache:cache高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM存储器速度快,所以当RAM的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
全站加速:给整个网站设置cdn加速,
二、什么是CDN 以及用法?
CDN的全称是Content Delivery Network,即内容分发网络。
主要提供两样东西,
为用户动态分配最近节点,便于缩短用户访问资源的时间及其他需求,以便加速一些动态资源的访问,比如游戏加速,视频直播分流,文件下载等。
基于第一点,还为静态资源提供缓存服务,加速用户的下次访问速度
用法有两种,
资源由其他网站提供(称为源站),比如某些开源cdn,直接修改代码里的资源链接,<script src="https://cdn.bootcdn.net/ajax/libs/vue/3.0.2/vue.cjs.js"></script>,
资源由自己的服务器提供,这种情况下接入CDN,其原理就是在某个DNS解析阶段, 把用户对我的网站的访问请求,转发到CDN的服务器上, 需要了解一些DNS解析方面的知识。超清晰的 DNS 原理入门指南
三、为什么需要CDN?
举个简单的例子,假设我们忽略网络传输的损耗、设备延时,网络传输速度接近光速,是30万公里每秒,从东京到美国硅谷的距离大概为1万公里,也就是说,如果你的服务器在东京,你上传了一张很小的图片,美国用户访问至少需要60毫秒。而且,这只是理论数据,现实世界中,网络环境是十分复杂的,跨地域、跨运营商、网络拥塞、抖动等问题,都会积少成多,使得延时成倍增加,还有可能访问失败,最终影响访问体验。
CDN的出现,正是为了解决这个问题。我们将这张图片分发并缓存在美国的CDN节点之上,美国用户就无需从东京获取数据,直接从就近的美国本地CDN节点获取到图片,这大大节省了传输时间,提升访问效率。CDN的节点通常会遍布全球,源站的文件会被被缓存到世界各地,这样全球用户都可以实现快速访问。
它有点像分布于各地的仓储物流点,很多品牌会预先在仓储物流点储备一些爆款商品(静态文件使用CDN进行缓存),当用户从电商平台下单购买货物的时候(用户发起请求),平台根据用户的收获地址就近匹配到最近的仓储物流点并直接进行派货(就近分发),让用户以最快的速度拿到快递包裹(分发的内容)。我们可以用实际的生活经验来做个对比,如果从江浙沪包邮区寄给杭州的用户,一般第二天就能到,如果是从北京、深圳发货,一般需要2-3天!
四、什么是DNS?
DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。
举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。
在dns中的一些术语,
A:地址记录(Address),返回域名指向的IP地址,为了安全可靠,会有多个A记录,也就是一个域名,对应多个A记录
MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,
由于CNAME记录就是一个替换,所以域名一旦设置CNAME记录以后,就不能再设置其他记录了(比如A记录和MX记录),这是为了防止产生冲突。举例来说,foo.com指向bar.com,而两个域名各有自己的MX记录,如果两者不一致,就会产生问题。由于顶级域名通常要设置MX记录,所以一般不允许用户对顶级域名设置CNAME记录。
五、一般的DNS解析流程?
实际上,一个完整的网址后面有个点, 如test.baidu.com. ,只不过浏览器为了方便用户都给省略了。 比如解析test.baidu.com. ,是具体怎么解析成IP地址的呢? 可以形容为,从右向左 . -> .com -> baidu.com. -> test.baidu.com
流程:
先找本地 DNS“,也叫 Local DNS,简称 LDNS。
一般是指你电脑上网时IPv4或者IPv6设置中填写的那个DNS。这个有可能是手工指定的或者是DHCP自动分配的。
如果你的电脑是直连运营商网络,一般默认设置情况下DNS为DHCP分配到的运营商的服务器地址。如果你的电脑和运营商之间还加了无线或者有线路由,那极有可能路由器本身还内置了一个DNS转发器,这玩意的作用是将发往他所有的DNS请求转发到上层DNS。此时由于路由器本身也接管了下挂电脑的DHCP服务,所以它分配给下面电脑的DNS地址就是它自身,所以你能看到电脑的DNS分配到的可能是192.168.1.1。实际上就是路由器自身,而路由器的DNS转发器将请求转发到上层ISP的DNS。所以这里说DNS是局域网或者是运营商的都可以
如果LDNS没有缓存记录,它将会一步步向后面的服务器做请求,然后将所有数据进行汇总后交给最终的客户,这个环节术语叫”递归“。
递归过程中,有个名词叫权威服务器, 是特殊的DNS服务器,所谓的权威是针对特定域名来说的。所以一般会说某某域名的权威DNS是谁,不能单纯的抛离域名问权威DNS是谁。是域名商在管理,负责解析在他这里购买的域名的权威解析, 一般而言, 就是指购买域名的地方,比如新网,万网(被阿里收购) 就是在这里可以配置你的域名,是指向一个ip(A记录),还是指向cdn地址(CNAME)
六、接入CDN之后的DNS流程?
按照上面的DNS流程,解析CNAME(cdn.com)域名时,会返回NS记录,去到CDN服务商的DNS解析服务器,即匹配到这个cdn.com后缀的域名都会到CDN服务提供商的DNS服务器做解析, 然后,经过cdn内部的负载均衡系统计算,返回一个有资源的缓存服务器的ip地址给浏览器,浏览器向该地址请求资源, 如果有资源就返回给浏览器,并把该资源做缓存,如果没有,就向上一级缓存服务器请求(即缓存命中率)
参考文献:
超清晰的 DNS 原理入门指南!边学边用
简单的解释下什么是CNAME?
关于CDN的原理、术语和应用场景那些事
OSS对象存储的全球加速方案
以上是关于cdn 系统化认识的主要内容,如果未能解决你的问题,请参考以下文章