可能有很多人还是不了解架构那么我在这里演示一下
JSDelivr 镜像站 分发工作原理
业务源站域名为 cdn.jsdmirror.com
,域名接入 CDN 加速服务后,当您发起 HTTP 请求时,会先发起DNS解析请求获取最优的访问IP,之后再向获取的访问IP发起内容请求,实际请求完整过程如下:
- 用户在网站或APP请求
cdn.jsdmirror.com
下的某资源(例如/npm/54ayao/test.png
),会先向本地DNS发起域名解析请求。 - 本地网关/路由器检查缓存中是否有
cdn.jsdmirror.com
的IP地址记录:- 如果有缓存,则直接返回给终端用户。
- 若没有缓存,则向用户设置的DNS查询
cdn.jsdmirror.com
解析。
- 用户设置的DNS检查缓存中是否有
cdn.jsdmirror.com
的IP地址记录:- 如果有缓存,则直接返回给终端用户。
- 若没有缓存,则向授权DNS查询
cdn.jsdmirror.com
解析。
- 授权DNS服务器接收到查询请求后,会查找
cdn.jsdmirror.com
的IP地址记录,并将IP地址返回给用户设置的DNS。 - 用户DNS会告诉用户位置信息 并且接受本次请求
- CDN根据调度系统返回更加合适的IP
- 用户设置的DNS将获取到的IP地址记录返回给本地网关/路由器。
- 本地网关/路由器将获取到的IP地址返回给终端用户。
- 终端用户根据获取到的IP地址,向 cdn.jsdmirror.com 发起资源请求。
- 如果有缓存,则L1直接返回给终端用户。(图13)
- 若没有缓存,则L1向L2
cdn.jsdmirror.com
获取。并且L2让L1缓存(图10,图12)
- 当请求到L2发现设置了多源站命中正则匹配的话
- 当命中/npm/、/gh/、/wp/、等目录(/为最后一位)触发页面修改 把网页中的jsdelivr修改为jsdmirror(图11.1)
- 当命中/npm/、/gh/、/wp/、等内容触发回源腾讯云EdgeOne(跨境链接优化节点)如果EdgeOne有相关内容直接返回,如果没有缓存着回源官方(图11.1)
- 当命中/npm/、/gh/、/wp/、等内容触发腾讯云cos审核,前置轻量服务器是为了免流量,如果COS有且审核相关内容直接返回,不通过就返回40x的451页面,如果没有这走轻量服务器(转码)然后回官方并且触发审核(图11.3)
- 用户获取到资源(图13)
PS:专业术语
在CDN(内容分发网络)中,L1和L2通常指的是不同层级的缓存节点。
- L1节点(一级节点或边缘节点):这些节点通常分布在全国各省市,更接近终端用户。当用户发起请求时,如果L1节点已经有缓存的资源,它会直接将数据返回给用户。如果L1节点没有缓存资源,它会向上游的L2节点请求资源。L1节点的主要作用是减少回源到源站的次数,提高访问速度,减轻源站压力。
- L2节点(二级节点或中心节点):L2节点通常分布在几个大区下,可以看作是汇聚式节点。当L1节点没有缓存资源时,它会向L2节点请求资源。如果L2节点有缓存资源,它会将资源同步到L1节点,并返回给用户。如果L2节点也没有缓存资源,那么它将直接回源到客户源站获取资源,并按照配置的缓存策略进行缓存。
这种分层的缓存策略有助于提高资源的获取速度和效率。L1节点由于更接近用户,可以快速响应用户的请求,而L2节点则作为后备,确保即使在L1节点没有缓存的情况下,也能通过L2节点快速获取资源。这样的架构有助于提高整个CDN网络的缓存命中率和性能。
在某些情况下,如果没有设置L2节点,L1节点可能需要直接向源站请求回源,并提供完整的节点功能。此外,L2节点在回源成功并将内容写入到本地的同时,也会同步将内容发送给L1节点,这样L1节点收到内容后,将内容发送给用户的同时,也会写入本地,以提高缓存效率
你已经到达了世界的尽头
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容