IT时代网8月29日消息,Cloudflare昨日发布技术博客称,通过对旗下支撑1.1.1.1公共DNS等服务的Big Pineapple平台缓存数据结构进行重构,在不更换任何硬件的情况下,成功释放了约100TB内存资源。
Big Pineapple平台在任何时刻都存储着超过2500亿条DNS缓存条目。在这样的量级下,单条记录多占1字节,整个集群就要额外消耗250GB以上内存。Cloudflare此次优化完全依靠Rust语言的数据结构重构实现,没有新增任何服务器。
优化从DNS缓存的键与值结构入手。由于写入后的响应不再修改,原本用于动态扩容的Vec字段并无必要,团队将其替换为Box数组与Box字符串,仅这一项每条记录就减少64字节,按2500亿条规模累计节省超过15TB。随后团队把原本分三个列表存放的数据、权威与附加记录合并为单个列表,并用偏移量替代指针,每条再省28字节;又对多数情况下与查询域名相同的记录所属域名做去重,避免重复保存;还调整了枚举存储方式,让占比超八成的A、AAAA记录不再为空闲空间买单——仅A记录每条就省下120字节。
最终团队把DNS记录的数据部分直接存为连续原始字节,取消逐个记录的枚举与独立堆分配,提升CPU缓存命中率。生产数据显示,单实例常驻内存在p99情况下由9.3GB降至5.3GB、降幅43%,p90由6.5GB降至3.8GB、降幅42%。基准测试中,单条缓存记录内存占用由953字节降至420字节、降幅56%,内存分配量由1.1KB降至461字节、降幅58%;缓存插入吞吐量由每秒62.5万条提升到89.3万条、提升43%,查询延迟由828纳秒降至670纳秒。相关优化已于今年5月18日起逐步部署,7月6日完成全量推广。
注:本文综合自IT之家等,文中包含AI辅助创作的内容。