JSDelivr 镜像站 分发工作原理

可能有很多人还是不了解架构那么我在这里演示一下

JSDelivr 镜像站 分发工作原理

业务源站域名为 cdn.jsdmirror.com,域名接入 CDN 加速服务后,当您发起 HTTP 请求时,会先发起DNS解析请求获取最优的访问IP,之后再向获取的访问IP发起内容请求,实际请求完整过程如下:

图片[1]-JSDelivr 镜像站 分发工作原理-jsdelivr镜像站
  1. 用户在网站或APP请求 cdn.jsdmirror.com 下的某资源(例如 /npm/54ayao/test.png),会先向本地DNS发起域名解析请求。
  2. 本地网关/路由器检查缓存中是否有 cdn.jsdmirror.com 的IP地址记录:
    • 如果有缓存,则直接返回给终端用户。
    • 若没有缓存,则向用户设置的DNS查询 cdn.jsdmirror.com 解析。
  3. 用户设置的DNS检查缓存中是否有 cdn.jsdmirror.com 的IP地址记录:
    • 如果有缓存,则直接返回给终端用户。
    • 若没有缓存,则向授权DNS查询 cdn.jsdmirror.com 解析。
  4. 授权DNS服务器接收到查询请求后,会查找 cdn.jsdmirror.com 的IP地址记录,并将IP地址返回给用户设置的DNS。
  5. 用户DNS会告诉用户位置信息 并且接受本次请求
  6. CDN根据调度系统返回更加合适的IP
  7. 用户设置的DNS将获取到的IP地址记录返回给本地网关/路由器。
  8. 本地网关/路由器将获取到的IP地址返回给终端用户。
  9. 终端用户根据获取到的IP地址,向 cdn.jsdmirror.com 发起资源请求。
    • 如果有缓存,则L1直接返回给终端用户。(图13)
    • 若没有缓存,则L1向L2 cdn.jsdmirror.com 获取。并且L2让L1缓存(图10,图12)
  10. 当请求到L2发现设置了多源站命中正则匹配的话
    • 当命中/npm/、/gh/、/wp/、等目录(/为最后一位)触发页面修改 把网页中的jsdelivr修改为jsdmirror(图11.1)
    • 当命中/npm/、/gh/、/wp/、等内容触发回源腾讯云EdgeOne(跨境链接优化节点)如果EdgeOne有相关内容直接返回,如果没有缓存着回源官方(图11.1)
    • 当命中/npm/、/gh/、/wp/、等内容触发腾讯云cos审核,前置轻量服务器是为了免流量,如果COS有且审核相关内容直接返回,不通过就返回40x的451页面,如果没有这走轻量服务器(转码)然后回官方并且触发审核(图11.3)
  11. 用户获取到资源(图13)

PS:专业术语

在CDN(内容分发网络)中,L1和L2通常指的是不同层级的缓存节点。

  1. L1节点(一级节点或边缘节点):这些节点通常分布在全国各省市,更接近终端用户。当用户发起请求时,如果L1节点已经有缓存的资源,它会直接将数据返回给用户。如果L1节点没有缓存资源,它会向上游的L2节点请求资源。L1节点的主要作用是减少回源到源站的次数,提高访问速度,减轻源站压力。
  2. L2节点(二级节点或中心节点):L2节点通常分布在几个大区下,可以看作是汇聚式节点。当L1节点没有缓存资源时,它会向L2节点请求资源。如果L2节点有缓存资源,它会将资源同步到L1节点,并返回给用户。如果L2节点也没有缓存资源,那么它将直接回源到客户源站获取资源,并按照配置的缓存策略进行缓存。

这种分层的缓存策略有助于提高资源的获取速度和效率。L1节点由于更接近用户,可以快速响应用户的请求,而L2节点则作为后备,确保即使在L1节点没有缓存的情况下,也能通过L2节点快速获取资源。这样的架构有助于提高整个CDN网络的缓存命中率和性能。

在某些情况下,如果没有设置L2节点,L1节点可能需要直接向源站请求回源,并提供完整的节点功能。此外,L2节点在回源成功并将内容写入到本地的同时,也会同步将内容发送给L1节点,这样L1节点收到内容后,将内容发送给用户的同时,也会写入本地,以提高缓存效率

你已经到达了世界的尽头

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容