当前位置: 首页 > news >正文

一种CDN动态加速首次访问加速方法

本文分享自天翼云开发者社区《一种CDN动态加速首次访问加速方法》.作者:蒋辉

具体方案如下:

1. 对于全站加速,节点内部的探测采用的非请求触发式探测(已实现),在首次访问时,使用配置的顶层父方案作为回源节点回源,具体如下:

master_parent_area: "area.parent1st.ctcdn.com"             #动态区域中心的主域名,分区域解析
backup_parent_area: "area.parent2nd.ctcdn.com"             #动态区域中心的备份域名,分区域解析
master_parent_country: "country.parent1st.ctcdn.com"           #动态全国中心的主域名,做全量解析
backup_parent_country: "country.parent2nd.ctcdn.com"           #动态全国中心的备份域名,做全量解析
master_parent_area_all: "area_all.parent1st.ctcdn.com"         #动态区域中心全量解析的主域名,该域名允许配置为空
backup_parent_area_all: "area_all.parent2nd.ctcdn.com"         #动态区域中心全量解析的备份域名,该域名允许配置为空

1)由于边缘主机角色,只会解析动态区域中心的主域名,只有当主域名解析失败或没配置,才解析动态区域中心的备份域名,并对区域父进行探测;而全站加速只有边缘主机会进行动态路径设置,所以,针对首次访问加速,边缘需要额外根据源站ip进行edns解析顶层父方案的域名并进行探测,顶层父方案定义:

  • 若配置了动态全国中心的主域名master_parent_country且解析不为空,则顶层父方案为master_parent_country配置的父方案;否则,配置了动态全国中心的备域名backup_parent_country且解析不为空,则顶层父方案为backup_parent_country配置的父方案域名;
  • 如果没有配置动态全国中心的主备域名或解析都为空,若配置了动态区域中心全量解析的主域名master_parent_area_all且解析不为空,则顶层父方案为master_parent_area_all配置的父方案;否则,若配置了动态区域中心全量解析的备域名backup_parent_area_all且解析不为空,则顶层父方案为backup_parent_area_all配置的父方案;
  • 如果没有配置动态全国中心的主备域名或解析都为空、且没有配置动态区域中心全量解析的主备域名或解析都为空,若配置了动态区域中心分区域解析的主域名且解析不为空,则顶层父方案为master_parent_area配置的父方案;否则,配置了动态区域中心分区域解析的备域名且解析不为空,则顶层父方案为backup_parent_area配置的父方案;

2)将顶层父方案作为全站加速频道的回源节点与中转节点一起(回源节点和中转节点进行去重)加入到内部抽象域名dynamic.inner.ctyun.cn的探测中,并将顶层父方案解析出来的父节点列表按照频道粒度作为回源节点vip进行保存,上报dynamic.inner.ctyun.cn频道的所有父节点探测数据到ccs,ccs下发该频道的两两节点的最优路径到agent,agent对于不活跃的频道设置首次访问的加速路径,路径拼接逻辑如下:

a)查找所有属于加速频道的回源节点vip路径;
b)agent获取到本节点到回源节点的最优路径后,判断该路径中的中转节点(除回源父节点外)是否在该频道使用的资源池里面,如果不在里面则过滤掉;
c)剩余的路径再与源站ip进行路径拼接,每个源站ip可能存在多条回源路径,如果配置的是非fastest_simple回源策略,则将其中一条回该源站ip的回源路径放在path,其他回该源站ip的回源路径放在backup_paths的数组中供网关访问失败重试;否则,对于fastest_simple回源策略,将所有源站ip的多条回源路径进行混排,并放在path中,按照随机的顺序进行排序,backup_paths的数组为空;

3)删除全站加速原来根据源站ip进行源站区域覆盖解析组域名的edns解析及回源节点vip列表的更新,根据顶层父方案解析的回源节点来更新探测的回源节点vip列表,并添加回源节点vip的探测计数,针对旧的回源节点vip探测,如果其他频道都没有再探测,则直接剔除该回源节点vip的探测,并清理其探测数据;

2. 对于应用加速,由于没有规划父方案,都是采用节点互探的机制来进行动态选路,因此,不能使用和全站加速一样的方案来解决首次访问加速的问题,考虑到应用加速资源池数量少,维护管理起来没有全站加速那么复杂,仍然采用用户上网加速及首次访问加速优化方案,并在原来方案的基础上,增加回源节点是否在频道配置的资源池的判断,过滤掉不在频道资源池的回源节点路径,当没有任何可用路径时,则进行首次访问加速空路径的告警。

3. 执行分频道热加载及全局reload时,以下几种场景会立即重新按照首次访问动态加速拼接路径给网关:

  • 回源策略变更;
  • 源站ip列表及协议、端口变更;
  • 父节点ip列表及协议、端口变更;
  • 首次访问加速(还未触发探测选路或动态路径设置到网关失败);

备注:如果没有可用的首次访问加速拼接路径,则调用/roledel接口清空网关共享内存的动态路径,避免网关仍然使用旧路径。

废弃detect_conf_module配置块中的origin_view_cover配置项

http://www.hskmm.com/?act=detail&tid=17223

相关文章:

  • 9.25
  • 字典
  • CF1716题解
  • 使用vosk模型进行语音识别
  • AI Agent如何重塑人力资源管理?易路iBuilder平台实战案例深度解析
  • docker-compose + macvlan + Elasticsearch - 9.1.4 + Kibana - 9.1.4
  • WinForm 计时器 Timer 学习笔记
  • RocketMQ入门:基本概念、安装、本地部署与集群部署 - 详解
  • 【LeetCode】122. 买卖股票的最佳时机 II
  • VSCode 使用技巧笔记
  • 【LeetCode】55. 跳跃游戏
  • Ansible + Docker 部署 Apache Kafka 3.9 集群
  • 【LeetCode】45. 跳跃游戏 II
  • 深入了解一波JVM内存模型
  • 什么是UDFScript用户自定义脚本
  • 【LeetCode】121. 买卖股票的最佳时机
  • CCPC2024-Zhengzhou G Same Sum(线段树)
  • Openwrt-DDNS 配置详解
  • 实用指南:Metal - 2. 3D 模型深度解析
  • 【2025.9.16】关于举办PostgreSQL数据库管理人才研修与评测班的通知
  • Java锁相关问题
  • CDN中使用边缘函数实现自定义编程
  • 第一次课程中的所有动手动脑的问题以及课后实验性的问题
  • 敏捷开发的几个阶段
  • 隐藏在众目睽睽之下:从PEB中解除恶意DLL的链接
  • 设计模式六大原则 - 实践
  • 运营商 API 安全最佳实践、案例与方案推荐(2025)|千万级接口的全链路实战
  • HyperWorks许可与多用户支持
  • react 中 keys 的作用是什么?
  • 破局与进化:火山引擎Data Agent从落地实践到架构未来