把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

火山 HTTPDNS Cache2.0:网段级精准调度驱动核心业务收益

作者:肖新蔚 赵彦奇

  • 2025-10-17
    北京
  • 本文字数:3326 字

    阅读完需:约 11 分钟

大小:1.78M时长:10:20
火山 HTTPDNS Cache2.0:网段级精准调度驱动核心业务收益

调度不准根因分析


在字节跳动的业务生态中,HTTPDNS 承担着为抖音、今日头条、西瓜视频等核心应用提供域名解析服务的重任。但目前我们所采用的业界主流缓存机制,却存在着根本性缺陷:当自身 IP 库与权威 DNS 服务器不同,易发生调度不准,可能影响用户体验。

主流调度修正机制的局限性


针对 HTTPDNS 调度不准风险,业界主流处置流程采用 “发现 - 定位 - 修复” 三步式闭环机制,具体如下:


  • 发现:通过监控告警、业务异常反馈等方式,识别存在调度偏差的解析场景;

  • 定位:结合访问日志、链路追踪数据等,定位调度不准的具体域名、源 IP 段和目标 IP 段;

  • 修复:通过技术手段修正解析结果,核心修复方式包含以下两类,但均存在显著局限性:

  • 地址库升级:基于外部供应商数据聚合构建的 IP 地址库,即使实时更新,仍难与外部 CDN 厂商的映射保持一致。

  • 临时劫持:通过手动配置解析劫持规则临时修正解析结果,不仅操作流程繁琐、耗时长,且需人工维护大量静态配置;若后续未及时清理或更新规则,易引发配置冲突、解析路径异常等长期维护风险。


Cache2.0 架构优化

缓存粒度技术方案对比


缓存粒度设计直接影响 DNS 解析精准度和 CDN 调度效率,主流厂商的方案存在明显差异:


厂商
国内某厂商

火山HTTPDNS Cache1.0

海外某厂商

火山HTTPDNS Cache2.0

缓存粒度

省份-运营商

城市-运营商

按权威DNS服务器在ECS中返回的scope prefix length动态确定缓存范围
自研网段库

示例

北京联通、广东电信、江苏移动

上海移动、深圳联通、杭州电信
36.79.215.0/24

36.79.215.0/24

优势
采用 “省份 - 运营商” 缓存粒度方案,该方案与 CDN 的 “省级节点 + 运营商线路” 划分逻辑一致 ——确保HTTPDNS 缓存粒度与 CDN 节点调度层级相匹配。该方案的优势是缓存项数量极少(国内省份 x 运营商仅百余条),缓存命中率高,回源少。

火山 HTTPDNS Cache1.0 将缓存粒度细化为 “城市 - 运营商”,相比国内某厂商的“省份 - 运营商”方案,其解析精准度显著提升,减小了调度偏差影响范围。

严格遵循 DNS 协议标准(RFC 7871 ECS 协议),在发起 DNS 查询时携带客户端的 ECS 子网信息,其缓存粒度依据权威 DNS 在响应中返回的 “scope prefix length”(ECS 前缀长度)动态确定。该方案的优势在于缓存粒度细、灵活性强。

火山 HTTPDNS Cache2.0 通过 “自研网段库 + 动态适配” 的创新架构,实现了对上述方案的突破:一方面,其依托自研的 IP 网段库(整合运营商网段、CDN 节点覆盖网段等数据),实现了网段级别的细粒度缓存能力,解析精准度不逊于海外某厂商的动态方案;另一方面,该方案不依赖权威 DNS 的 ECS 协议实现 —— 即便面对实现 ECS 协议不标准的权威 NS,仍可通过自研网段库确定合理的缓存粒度,将 “缓存污染” 的影响范围控制在小网段。
劣势

解析精准度受限于 “省份” 级粗粒度,当 IP 地址库存在调度偏差(如误将某省份用户指向错误 CDN 节点)时,会导致该省份内所有同运营商用户均获取错误解析结果,影响范围大。
该方案仍会触发 “城市级缓存污染”,影响整个城市同运营商用户的CDN 访问体验。
当遭遇 “不遵循 ECS 标准协议” 的权威 DNS (如部分老旧权威服务器不支持 ECS 字段、或返回的 scope prefix length 无效)时,会导致缓存策略失效。
自研网段库维护成本高,基准库需依赖IP网段库生成,同时需长期维护网段自适应划分系统。

缓存键精细化重构


我们综合考量调度精准度、工程复杂度以及成本,决定将缓存粒度由“城市 + 运营商”细化为“网段”。


传统方案(国内某厂商/火山 Cache1.0)



  • 缓存粒度:城市+运营商

  • 污染范围:整个城市运营商

  • 调度准确性:低


Cache2.0 方案


  • 缓存粒度:网段

  • 污染范围:单个网段

  • 调度准确性:高


网段自适应划分算法


背景:外部 CDN 厂商的调度结果会随网络拓扑和调度策略持续变化,而静态网段库划分方式固定,难以实时跟踪调度结果变化。为解决这一问题,网段库动态划分算法通过“数据输入—一致性校验—网段调整—结果输出”的闭环流程,实现了网段库的自适应动态划分。


具体流程如下:


  • 数据输入

  • 收集 客户端 IP(ClientIP)—CDN IP(CDNIP) 映射数据

  • 数据来源:主动拨测结果;HTTPDNS 递归节点日志(包含 cip、cdn ip、记录类型等)。

  • 数据范围:主流 CDN 厂商的解析结果。

  • 网段归属判断:

  • 若相邻 CIP 的 CDN IP 归属同一运营商,则可合并为连续网段

  • 输出 CIP–CDN IP 数据集,作为后续网段划分依据

  • 一致性校验

  • 将整合后的数据集与存量 CidrDB(现有网段库)逐网段进行对比,检查 “映射一致性”。

  • 若存在映射不一致,则触发网段调整流程。

  • 网段调整

  • 合并:探测数据集的网段比现有网段库更粗,合并为更大网段。

  • 拆分:探测数据集的网段比现有网段库更细,拆分为更小网段。

  • 结果输出

  • 生成优化后的 New CidrDB。

  • 替换存量网段库,实现动态更新。

  • 持续迭代

  • 重复上述流程,实现对真实网络拓扑的动态追踪。

缓存策略优化


为解决缓存粒度细化可能导致的命中率下降问题,Cache2.0 引入了四重优化策略,最终实现了如下收益:


缓存命中率提高了 15%,缓存量、CPU 使用和出网流量降低了约 70%。

两级一致性哈希分流


火山 HTTPDNS 的流量转发以一致性哈希思想为核心,将用户请求链路(用户→LB→缓存层→递归层)拆分为两级哈希调度:


一级调度(LB→缓存层):以“源 IP + 域名”为哈希键。使用 LB 的一致性哈希策略,将同一用户对同一域名的请求统一路由至固定的 HTTPDNS 节点,避免传统轮询导致的请求分散。


二级调度(缓存层→递归层):以“域名 + 网段” 为哈希键。以 “域名 + 客户端网段” 作为哈希键,对递归层集群进行调度,确保某一 “域名 + 网段” 对应的所有查询请求均定向到唯一的递归层节点。


两级哈希协同调度,实现 “缓存块 - 节点” 绑定,解决了缓存的碎片化问题,同时单一节点故障仅影响极小范围缓存。


缓存分级管理


在 HTTPDNS 场景中,不同域名对解析精度的需求不同。高优先级域名(如 API 调用、直播 / 点播流媒体分发)对解析精准性要求高,缓存不够精细可能导致跨网访问延迟增加;而低精度需求域名(如 302 域名)采用过细缓存会浪费存储资源,频繁回源请求也会增加权威 DNS 压力。


为实现缓存资源的精细化分配,火山 HTTPDNS 将缓存体系划分为 “网段缓存、城市 - 运营商缓存、全局缓存” 三级,各级缓存适配不同应用场景。


  • 网段缓存:作为最高精度层级,聚焦高优先级业务场景 :一方面适配高优域名(如抖音 API 调用、图片分发、点播 / 直播流媒体传输等对精准性敏感的域名),另一方面服务重点集群(如 ToB 企业 HTTPDNS 服务、ToB 专属公共 DNS 服务),通过网段级细粒度缓存确保解析结果与用户实际网络链路高度匹配,降低跨网访问延迟;

  • 城市 - 运营商缓存:定位为中等精度层级,适配普通域名场景:针对调度精准度要求较低的域名,以 “城市 + 运营商” 为缓存单元,平衡缓存命中率与存储开销;

  • 全局缓存:作为基础精度层级,专门适配非智能解析域名:针对不支持 CDN 动态调度、解析结果无地域 / 运营商差异的域名(如静态官网、通用工具类服务域名),采用全局统一缓存策略,所有用户查询共享同一缓存结果,最大化提升缓存命中率,降低对权威 DNS 的回源请求压力。


缓存更新分级策略


在 HTTPDNS 系统,统一的主动刷新策略虽然能保证缓存命中率,但存在明显问题:对不需要精细调度的域名浪费资源,同时大量后台线程的集中刷新增加了下游压力。


基于以上问题,火山 HTTPDNS 引入 “主动刷新 + 被动刷新”分级策略,以域名优先级和业务需求差异为依据,将缓存更新分为两类:


  • 后台线程主动刷新机制:针对高优域名(白名单),保留后台线程主动刷新,确保缓存持续有效、用户请求直接命中最新数据;

  • 用户请求被动刷新机制:针对普通域名或非智能解析域名,由请求触发缓存更新,按需刷新,无需常驻后台监控线程,降低系统资源消耗。


通过这种分级更新策略,高优先级域名仍能保证低延迟和高命中率,同时普通域名的刷新开销被显著降低。

缓存预取机制


依托 “缓存空间局部性原理”,火山 HTTPDNS 设计了缓存预取机制。当某条缓存请求(如 A 网段域名解析)触发更新时,系统不仅刷新目标网段缓存,还会同步更新与其具有 “亲缘关系” 的网段缓存(“亲缘关系”指地理相邻、同运营商节点覆盖的网段)。这种 “单次请求触发批量预取” 的设计能够提前将关联网段缓存置于准备状态,提升后续请求的命中率。


以抖音直播域名的实际访问场景为例,预取机制的运作过程如下:

  • 本网段更新:当用户 A(IP 归属北京联通 10.0.1.0/24 网段)发起直播域名解析请求时,系统首先刷新其所属的 10.0.1.0/24 网段缓存。

  • 预取更新:系统同时刷新与 10.0.1.0/24 网段具有亲缘关系的网段缓存,例如北京联通下的相邻网段(10.0.2.0/24、10.0.3.0/24),确保这些网段缓存也处于最新状态。

随后,当用户 B(10.0.2.0/24)或用户 C(10.0.10.0/24)发起相同直播域名的解析请求时,由于对应网段缓存已提前预取,无需等待回源即可直接命中缓存,显著降低访问延迟。

全链路效能提升

服务端调度精准度提高


借助网段级缓存,用户获取的 IP 地址更加精准。服务端调度不准比例从万分之六下降至万分之二,降幅 60%,有效缓解了传统粗粒度缓存导致的“省份/城市级缓存污染”问题。

客户端性能优化



成功率
耗时
场景
业务核心接口,弱网+非连接复用场景
非连接复用场景耗时
效果
+1.15%
-14ms


  • 成功率:核心 feed 接口,在弱网+非连接复用场景下提升 1.15%

  • 耗时:非连接复用场景耗时减少 14ms

用户体验提升


  • 性能指标:首刷及启动耗时下降

  • 用户指标:用户行为指标(send 与 click)正向,用户活跃度提升


本方案通过服务端精准调度 → 客户端性能优化 → 用户行为改善的闭环,实现了全链路效能提升,既保证了调度精度,也优化了客户端访问体验和用户活跃度。

持续演进方向

共享缓存


目前,各机房的负载均衡策略与缓存策略未能完全对齐(部分采用随机转发,部分虽然使用一致性哈希但粒度不一致),导致同一数据在多个实例中被重复缓存,资源利用率偏低,缓存命中率也有待提升。


未来,我们计划构建一个分层共享的高可用缓存体系:


  • 在同一机房内,实例通过一致性哈希协同分工,每台既承担分片缓存,也能代理转发请求,从而减少重复存储并提升命中率;

  • 在跨机房层面,按区域部署二级缓存节点,作为容量更大、延迟更低的共享中心,承接一级未命中的请求,降低跨区域访问和上游压力。与此同时,引入热点数据副本、请求合并和故障转移等机制,保证高并发和异常情况下的稳定性与可用性。


通过这一演进,整体架构将逐步升级为层次化、分布式且具备高可用能力的缓存网络,为未来大规模业务的持续扩展提供坚实支撑。

2025-10-17 11:285919

评论

发布
暂无评论

隐藏Bash历史记录:实用技巧与最佳方法

qife122

Linux 安全

VMware Tools 13.0.1.0 发布 - 客户机操作系统无缝交互必备组件

sysin

vmware

BetterYeah AI完成超亿元B轮融资,阿里云领投加码企业级智能体研发

BetterYeah AI

企业agent

开发者说|Aux-Think:为什么测试时推理反而让机器人「误入歧途」?

地平线开发者

自动驾驶 算法工具链 地平线征程6

Cyble连续第二年被评为样本供应商

财见

VMware Fusion 13.6.4 for Mac - 领先的免费桌面虚拟化软件

sysin

fusion

行业分享丨从装载机到电动车,多学科求解器平台如何拓展仿真边界

Altair RapidMiner

AI 汽车 仿真 CAE EDEM

阿里云 RabbitMQ 可观测性最佳实践

观测云

RabbitMQ

Apache RocketMQ + “太乙” = 开源贡献新体验

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

Vue3响应式编程三剑客:计算属性、方法与侦听器深度实战指南

量贩潮汐·WholesaleTide

Vue 前端

Nacos 开源 MCP Router,加速 MCP 私有化部署

阿里巴巴云原生

阿里云 云原生 nacos MCP

VMware Tools 12.5.3 发布 - 客户机操作系统无缝交互必备组件

sysin

vmware

用一套陪玩系统小程序源码,开启你的游戏陪玩平台创业之路

DUOKE七七

uni-app vue2 MySQL 数据库

面试官:如何实现企业级MCP分布式部署?

王磊

酷开携AI智能体亮相ATC,重塑人车交互新范式

业界

枫清科技参编的《人工智能知识工程指南(1.0)》发布

Fabarta

人工智能

VMware Workstation 17.6.4 Pro for Windows & Linux - 领先的免费桌面虚拟化软件

sysin

Workstation

MCP Server 之旅第 5 站:服务鉴权体系解密

阿里巴巴云原生

阿里云 Serverless 云原生 MCP

Mistral 开源首个音频模型 Voxtral:转录+音频理解;语音转写工具 Willow 筹资 420 万美元丨日报

RTE开发者社区

7月17日 2025可信数据库发展大会 邀您共探GenAI时代对数据库的挑战与需求

MatrixOrigin

资源利用率提升50%:Serverless 驱动国诚投顾打造智能投顾新范式

阿里巴巴云原生

阿里云 Serverless 云原生

技术干货丨基于SimLab的耳机充电底座的多角度跌落分析

Altair RapidMiner

仿真 CAE Simlab 跌落仿真 电子消费品

上线!《指标 + AI 数智应用白皮书》解读:从数据地基到行业落地,袋鼠云揭秘数智化经营实践路径

袋鼠云数栈

AI 指标 指标管理 数智化 数智化转型

VMware ESXi 8.0U2e 发布 - 领先的裸机 Hypervisor

sysin

esxi

使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道

Databend

埋点采集之曝光

神策技术社区

埋点 曝光埋点 大数据分析

产品更新丨谷云科技 iPaaS 集成平台 V7.6 版本发布

谷云科技RestCloud

API网关 产品更新 集成平台 ipaas

VMware ESXi 7.0 U3w 发布 - 领先的裸机 Hypervisor

sysin

esxi

MCP如何赋能一线理财经理在 AI 时代赢得客户的深层信赖

盈米AI开放平台

线上活动丨AI 语音客服:最先跑通的 Voice Agent 场景,在面临什么真问题?丨 RTE Meetup

RTE开发者社区

VMware ESXi 8.0U3f 发布 - 领先的裸机 Hypervisor

sysin

esxi

火山 HTTPDNS Cache2.0:网段级精准调度驱动核心业务收益_AI&大模型_InfoQ精选文章