CDN(内容分发网络)

CDN是一种提高用户访问速度的技术。解决网络拥塞问题。

在一次网络请求中,CDN究竟做了哪些事?
在浏览器中输入一个网址,DNS服务器会将域名的解析权交给CNAME指向的CDN专用的DNS服务器,接着专用的DNS服务器返回CDN负载均衡集群的ip地址。
负载均衡设备根据设置好的策略来选择相应的CDN缓存服务器,并返回ip地址。最后客户端对缓存服务器发起请求,缓存服务器响应用户请求,返回相应内容。
如果这台服务器没有命中,那么它将会请求它的上一级缓存服务器。直到追溯至源站服务器,将内容拉至本地。

提高用户访问速度第一点可以想到的优化请求方法就是缓存服务器,比如你在广东访问百度,他原服务器在北京,这时候如果广东有个百度的缓存服务器,那么请求按就近原则发送到广东的缓存服务器。
第二点就是当有多台服务器的时候,比如广东1,广东2这时候DNS会帮我们分发到压力较小或者延迟较小的其中一个服务器,当然host地址没有变的,这个就是分发网络的例子;更具体来说就是利用http302重定向到压力小的服务器。


前端性能优化:

  1. 减少http请求
  2. 使用CDN
  3. 压缩文件

如果没有CDN,假如苏州用户访问某一网站,而这个网站的服务器在北京。通常认为,用户距离服务器越远,中间间隔的节点越多,网络延时越严重。
使用ping命令会发现,RTT(往返时延)是35ms,于是我们使用https协议,https协议建立连接需要七次握手,建立连接的时候已经使用了100ms。
现在,我们在南京也设立了一台服务器,此时的RTT缩短为8ms,https建立连接的时间也缩短为30ms。

CND的服务商也在做类似的事情,首先,服务商会在很多城市设立机房。
现在,当苏州用户访问网站的时候,用户电脑的操作系统会先向DNS服务器查询域名所对应的ip,DNS服务器接收到查询请求之后,可以获取到请求者粗略的物理位置,就会返回所有服务器中,距离用户最近的CDN节点服务器的IP,例如南京机房的IP。这样用户打开网页的速度就变快了。

现在,请求到达了CDN南京节点的服务器,我们通常不会直接操作CDN节点来直接管理文件,CDN更像是一个文件缓存系统,如果CDN中有用户访问的文件缓存,则直接使用缓存文件并返回。否则,试图获取最新数据,创建缓存,然后再返回。

但是,涉及到缓存就一定要考虑缓存更新的问题,现在CDN节点上的文件过期时间还没到,而因为某些原因,我们更新了源服务器上的文件。
请求过来,CDN返回的是过期文件,为了解决这一问题,大多CND运营服务商都会支持清除所有节点上符合特定规则的缓存,节点上的缓存文件被清除后,当有新的请求进来,这时CDN节点服务器又会去加载新的文件,缓存更新成功。

除了减少响应时间外,CDN还能减少源服务器的请求压力。
当用户访问量很高的时候,如果没有CDN,那所有的请求都会直接打到源服务器上,增加了服务器自身的宽带压力。
有了CDN之后,静态资源的请求压力被CDN分担,所以到源服务器上的压力就会小很多。


借用阿里云官网的例子,来简单介绍CDN的工作原理。假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。LDNS获取DNS返回的解析IP地址。用户获取解析IP地址。用户向获取的IP地址发起对该资源的访问请求。如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。从这个例子可以了解到:(1)CDN的加速资源是跟域名绑定的。(2)通过域名访问资源,首先是通过DNS分查找离用户最近的CDN节点(边缘服务器)的IP(3)通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。

https://www.zhihu.com/question/36514327/answer/1604554133

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-玫瑰少年-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值