CDN 底层原理

背景

笔者在近期秋招面试中,遇到了一位比较资深的开发者,他问的就相对于前面几轮面试更偏底层一些,其中聊到了 CDN 的底层原理,就这个问题讨论了很久。

面试官:“你知道 CDN 的是怎么知道找到距离你最近的服务器,然后把资源分配给你的吗?”

其实我在这个时候不太清楚,就凭印象想了一下之前学的东西,半猜半问的回答的:

“是通过一个可以调度距离的服务器来做的?”

面试官说不对,然后我灵机一动,从五层模型的角度聊了一下这个事情:

五层模型

物理层和数据链路层我就不聊了,直接从最核心的网络层开始聊

  1. 网络层:CDN通过智能DNS系统在网络层工作,将用户的请求重定向到最佳的边缘节点,从而减少了数据包需要穿越的网络距离,提高了传输效率。
  2. 传输层:。CDN在传输层通过使用像TCP(传输控制协议)这样的协议来确保数据的可靠传输。此外,CDN还涉及到会话的优化,例如通过压缩技术减少传输数据的大小,或者通过会话复用来提高效率。
  3. 应用层:CDN在应用层的作用最为明显,因为它直接处理用户请求的内容,如Web页面、图片、视频等。CDN通过缓存这些内容到边缘节点来减少延迟,提高用户访问速度,并提供负载均衡和故障转移能力。

IP-DNS-GSLB

通过这一段描述我们可以看到其实 CDN 的核心在于网络层这里,也就是“将用户的请求重定向到最佳的边缘节点”,我们展开聊聊:

我们首先会在网络层进行 DNS 解析,在解析的过程中判断这个域名有没有使用 CDN 服务,如果使用了,我们会有一个 GSLB 系统来处理这个事情,那么这个系统是啥,原理是啥呢?我们举个例子来说:

当用户发起对某个域名的请求时,该请求首先被发送到本地DNS服务器(Local DNS)。本地DNS服务器会向权威DNS服务器查询域名的IP地址。在GSLB的环境下,权威DNS服务器实际上是被GSLB系统所接管,它不再仅仅返回一个静态IP地址,而是根据一系列策略来决定返回哪个IP地址。

(在 GSLB 前面那一段是不是很熟悉?没错,这就是 DNS 解析的过程,在这个过程中做了这个事情。)

我在这里简单列出几个可能的策略:

  1. 地理位置:GSLB会根据用户的地理位置信息,选择最近的服务器节点以减少延迟。
  2. 服务器健康状态:GSLB会检查各个服务器节点的健康状态,避免将请求分配到故障或性能低下的服务器。
  3. 负载情况:GSLB会考虑每个服务器节点的当前负载,将请求分配到负载较轻的服务器以平衡负载。
  4. 网络拥塞情况:GSLB会监测网络路径的拥塞情况,选择最佳的路由以避免网络瓶颈。

Ending

我和面试官聊完五层模型之后还是坚持说应该有一个可以调度的东西,然后面试官看我确实想不出来,就提示我 DNS 相关的东西,我答了和上述类似的一个东西,应该在他那里是算过关了,之前确实没听过.jpg

那么这就是这篇文章的全部内容啦。

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=20194,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?