Как Cloudflare сэкономила 100 терабайт памяти, оптимизировав DNS-кеш сервиса 1.1.1.1

kubelet 8 минут назад Краткое содержание статьи Как Cloudflare сэкономила 100 терабайт памяти, оптимизировав DNS-кеш сервиса 1.1.1.1 Средний 12 мин 80 Блог компании Флант DevOps * Системное администрирование * Кейс...
Will Anthropic have the best AI model at the end of October 2026?
Вот важная новость с фронта ИИ: kubelet 8 минут назад Краткое содержание статьи Как Cloudflare сэкономила 100 терабайт памяти, оптимизировав DNS-кеш сервиса 1. 1 Средний 12 мин 80 Блог компании Флант DevOps * Системное администрирование * Кейс Перевод Автор оригинала: Себастьян Нейтбум (Sebastiaan Neuteboom) Это перевод статьи Себастьяна Нейтбума, опубликованной в блоге Cloudflare. Автор рассказывает, как им удалось за пару месяцев вдвое уменьшить потребление памяти DNS-кешем, а заодно улучшить его производительность.
BigPineapple — платформа, на базе которой работают 1. 1, Gateway DNS, DNS Firewall, AS112 и несколько других DNS-сервисов Cloudflare, — постоянно хранит более 250 млрд DNS-записей в кеше. На таких масштабах лишний байт в каждой записи превращается в 250+ ГБ потраченной памяти в масштабах всей инфраструктуры.
Технические детали
Внедрив пять последовательных изменений в то, как кешированные записи хранятся в памяти, мы смогли урезать объём занимаемой памяти более чем вдвое. В совокупности это сэкономило нам примерно 100 ТБ — столько же RAM стоит в 130 наших серверах Gen 13. Кеш стал работать быстрее.
Пропускная способность при вставках выросла на 43 %, а задержка при поиске упала на 19 % — уменьшение числа аллокаций и улучшение локальности данных в памяти позволили нам не жертвовать скоростью ради экономии места. Что мы кешируемПосле холодного старта кеш BigPineapple абсолютно пустой. По мере поступления DNS-запросов он начинает заполняться.
Как только достигается лимит по количеству записей, мы выкидываем старые или редко запрашиваемые элементы, чтобы освободить место под новые. Точный размер кеша варьируется в зависимости от датацентра. Когда используется EDNS Client Subnet (ECS), авторитативные серверы возвращают разные ответы в зависимости от подсети клиента.
Отраслевые последствия
Поэтому приходится кешировать сразу несколько вариантов ответа на один и тот же запрос. Из-за этого растут и количество записей, и память, которую они потребляют. Так что оптимизации, о которых тут рассказывается, дают максимальный эффект в локациях, где ECS используется особенно активно.
Каждый элемент кеша — это пара «ключ-значение». Ключ указывает на то, что именно запрашивается:pub struct В значении лежит сам DNS-ответ: секции answer, authority, additional-записи, плюс метаданные вроде времени создания, счётчика хитов и Time to Live (TTL). pub struct Обе структуры можно улучшить.
В некоторых полях используются типы данных, создающие лишний оверхед, который не нужен после того, как запись оказалась в кеше. Измеряем потребление памятиЧтобы оценить эффект от каждого изменения, мы заполняем кеш случайно сгенерированными записями, которые примерно соответствуют распределению трафика в production (56 % A-записей, 25 % AAAA и 19 % TXT). Каждая такая запись в кеше содержит от одной до четырёх DNS-запись.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.






