CDN入门文档

流程
当您访问一个使用了CNAME和CDN服务的域名时,以下是整个流程的简化描述:
- 输入域名: 您在浏览器地址栏输入一个域名,比如www.example.com。
- 查询DNS: 您的计算机会向DNS服务器查询这个域名对应的IP地址。
- CNAME解析: 如果www.example.com设置了一个CNAME记录,指向另一个域名(比如CDN提供商的域名),DNS服务器会返回这个CNAME记录。
- 再次查询DNS: 您的计算机接着会向DNS服务器查询CNAME记录指向的域名对应的IP地址。
- 获取CDN节点IP: CDN的DNS服务器会根据您的地理位置、网络状况和负载情况等,将请求重定向到最近的CDN节点。这个节点的IP地址会被返回给您的计算机。
- 请求CDN节点: 您的计算机使用得到的IP地址,向CDN节点发起请求。
- 内容分发: 如果请求的内容已经在CDN节点上缓存,那么节点会直接将内容发送给您的计算机。如果内容不在缓存中,CDN节点会向原始服务器请求内容,然后缓存该内容,并将其发送给您的计算机。
- 显示内容: 您的浏览器接收到内容后,将其渲染显示在屏幕上。
例
假设场景
假设您想访问一个在线购物网站 www.shopexample.com,该网站使用了CDN服务来加速全球用户的访问速度。
步骤详解
- 输入域名: 您在浏览器地址栏输入www.shopexample.com 并按下回车。
- 本地DNS查询: 您的电脑会首先查询本地DNS缓存,看是否有www.shopexample.com 的IP地址记录。如果没有,它会向您的ISP(互联网服务提供商)的DNS服务器发送一个DNS查询请求。
- CNAME记录解析: 如果www.shopexample.com 设置了CNAME记录,比如指向 cdn.shopexample.com,那么您的ISP的DNS服务器会返回这个CNAME记录。
- 查询CDN域名: 您的电脑接着会向DNS服务器查询cdn.shopexample.com 的IP地址。
- CDN智能解析: CDN的DNS服务(比如使用阿里云CDN)会根据您所在地的地理位置、网络状况和服务器负载情况,智能选择一个离您最近的CDN节点的IP地址,并返回给您的电脑。
- 请求CDN节点: 您的电脑使用这个IP地址,向选定的CDN节点发起HTTP请求。
- 内容提供:
- 缓存情况:如果该CDN节点上已经缓存了 www.shopexample.com 的内容,它会直接将内容发送给您的电脑。
- 未缓存情况:如果内容不在CDN节点上,节点会向原始服务器 shopexample.com 请求内容,获取内容后缓存到节点上,并同时将内容发送给您的电脑。
- 浏览器渲染: 您的浏览器接收到从CDN节点发送过来的网页内容后,开始渲染页面,您就可以看到网站的内容了。
阿里云CDN是如何帮助加速的
当我们通过浏览器输入一个URL时,最终会在屏幕上显示一个网页、一段视频、一首音乐或一张图片。这一过程背后涉及了多种软件和硬件的解析与转发操作,实际上相当复杂。接下来,本文将通过一个简单的请求示例,介绍阿里云CDN是如何在这个请求流程中起到加速作用的。
一、基本的请求过程

二、引入阿里云CDN的请求过程

阿里云CDN可视作一个庞大的缓存服务,该服务在网络拓扑逻辑中位于服务器和用户之间(图中紫色部分就是引入的阿里云CDN)。当用户发起请求并到达阿里云CDN时,系统将首先查询是否存在对应的缓存图片。如果缓存中存在该图片,则将直接返回缓存的图片给浏览器,而无需访问服务器;若缓存中不存在对应的图片,则会通过阿里云CDN向服务器发起请求,获取到图片后返回给用户,并且将其存储在阿里云CDN中,以便于下一个访问该图片的请求能够快速获取。
本地搭建cdn模拟访问过程
### DNS 解析流程
1. 用户访问 web.cdn.test
2. CNAME解析到 web.cdn.test.c.lanpangzi
3. 需要解析 .c.lanpangzi 这个域
4. 通过 NS 记录找到 CDN 服务商的 DNS 服务器
- CDN DNS 服务器返回最优节点 IP
# 在 lanpangzi 域的 DNS 配置中
c.lanpangzi. IN NS ns1.cdnprovider.com.
c.lanpangzi. IN NS ns2.cdnprovider.com.
搭建dns服务器
搭建前

搭建后着测试下修改后的网络访问有没有问题

搭建回源服务器和cdn边缘节点
接着我们来快速搭建下回源服务器和cdn的边缘节点,这里我是直接借用了nginx来进行搭建,因为nginx可以用作静态资源服务器,所以可以直接启动一个nginx容器把它作为源服务器,提供图片资源的访问。 并且nginx也能提供缓存服务,这也刚好符合边缘节点缓存资源的需求。由于边缘节点需要回源到源服务器,但是容器的ip又是不固定的,所以这里我直接用docker-compose对这两个容器进行了编排,这样在写nginx配置文件的时候,便可以用容器名代替ip了。

1051

被折叠的 条评论
为什么被折叠?



