摘要:本文介绍了火山引擎TRDNS在泛CDN场景中的实践经验和优化措施。内容从能力出发,详细介绍了遇到的挑战、TRDNS的优化措施、取得的效果。主要能力为以下2部分:
-
控制台能力,包括专用的IP库管理系统、定制调度API系统
-
定制调度能力,包括权重与分组响应、智能解析、CNAME加速、302调度、LocalDNS画像
在直播CDN、静态CDN和动态CDN等泛CDN边缘接入场景中,通常采用DNS来作为边缘第一层的接入调度。由于边缘接入点分布广泛且容易受到外部环境的影响,导致接入点频繁变动,因此,在泛CDN环境中,DNS的基础调度功能显得尤为关键。
以字节跳动集团业务为例,在泛CDN场景下拥有日均超千亿次的解析需求,为保障业务稳定运行,应用了TrafficRoute-DNS(下文简称TRDNS)作为基础调度系统,不仅负责云解析服务,还承担了泛CDN的调度解析服务,支撑起了泛CDN日均超千亿次的解析量。
01 控制台能力
1.1专用的IP库管理系统
IP库对于智能解析来说至关重要。由于CDN业务与多家运营商建立了节点合作关系,能够及时获取运营商IP网段的一手资料。每当运营商更新其IP网段,CDN系统就会希望IP库能够迅速做出更新响应。为了满足这一需求,TRDNS开发了一套专用的IP库管理系统。
该系统有以下能力:
-
IP库版本管理能力
-
IP库自定义字段打包能力
-
IP库灰度发布能力
1.2定制调度API系统
CDN流量调度系统采用定时任务,以分钟级频率更新调度策略,并将其转换为DNS配置文件。这些文件通过DNS调度API下发至DNS控制面系统,经过一系列数据流操作后,DNS配置信息被存储至DB中。同时,TRDNS执行秒级定时任务,主动拉取DNS控制面系统的增量DNS变更,并通过reload操作更新域名配置。这一流程确保了DNS解析指令能够在分钟级内下发并生效。详细的调度系统如图所示。
调度API是为CDN系统专门定制的,与标准API接口不同,它需要具备高性能、低延迟的能力,以应对大量DNS解析操作的需求。CDN系统通常需要在分钟级别的时间间隔内下发3000到20000条DNS解析记录的变更。为此,我们对调度API进行了多轮性能优化和调整,确保其能满足这一需求。<