Cloudflare высвободила 100 ТБ оперативной памяти изменением всего нескольких строк кода
Специалистам Cloudflare удалось высвободить порядка 100 ТБ оперативной памяти в масштабах всей глобальной сети, существенно переработав механизм распределения кеша между узлами. Проведя аудит алгоритма согласованного хеширования в open-source фреймворке Pingora, разработчики выяснили, что львиная доля задействованных ресурсов расходовалась впустую.

Инфраструктура Cloudflare активно задействует кеширование контента, позволяя мгновенно отдавать запрошенные страницы с ближайшего сервера без отправки повторных запросов на первоисточник. За выбор оптимального узла отвечает алгоритм Ketama, функционирующий на базе согласованного хеширования.
Механизм преобразует адрес веб-страницы в цифровое значение и соотносит его с картой серверов. Каждому физическому компьютеру при этом присваивается множество виртуальных маркеров, хаотично разбросанных по кольцевой шкале хешей. Подобный подход гарантирует бесшовное перенаправление трафика в случае сбоя или отключения одного из узлов.
По мере масштабирования сети на каждый сервер стало приходиться порядка 100 000 таких виртуальных позиций. Ситуацию усложняла необходимость учитывать пропускную способность оборудования, географическое расположение и специфические ограничения, из-за которых определенные запросы обрабатывались только на выделенных узлах. В итоге служебные таблицы маршрутизации начали поглощать колоссальные объемы RAM.
Углубленный статистический анализ показал, что столь избыточное количество виртуальных точек практически не повышает эффективность балансировки. Выяснилось, что после преодоления порога в 10 000 маркеров дальнейший рост их числа приносит лишь микроскопические улучшения в равномерности распределения нагрузки.
Эксперты компании снизили плотность виртуальных точек приблизительно вдесятеро без малейшего ущерба для отказоустойчивости. Следом они провели рефакторинг структур данных на языке Rust, урезав размер каждой пары «хеш — сервер» ровно на два байта. В масштабах отдельной записи это микроскопическая величина, однако при миллиардах элементов она трансформируется в гигантский объем сэкономленной памяти.
Комплекс проведенных мер позволил сократить потребление RAM почти на 100 ТБ. Чтобы минимизировать риски, обновление внедряли постепенно: новый вариант алгоритма запустили параллельно со старым, предусмотрев мгновенный откат на случай непредвиденных сбоев.
Стоит отметить, что для Cloudflare это далеко не первый опыт столь масштабной экономии ресурсов за счет локальных программных улучшений. Ранее инженеры компании уже высвобождали около 100 ТБ оперативной памяти, просто переработав формат хранения записей в DNS-кеше популярного резолвера 1.1.1.1.
Источник: iXBT
Xiaomi выпустила ультратонкий металленный павербанк на 10 000 мАч и 45 Вт всего за 60 долларов
Мощнейшая за три месяца магнитная буря накрыла Землю и продлится сутки
NASA запустит первый модуль лунной базы в декабре — на 3 года раньше плана
Китайский производитель CXMT опережает Samsung и бросает вызов мировым лидерам памяти
Microsoft сократила лимит памяти в облачном хранилище для подписчиков Microsoft 365 Family и Premium
На Земле началась магнитная буря: россияне любуются полярным сиянием
Квартальная прибыль Samsung превысит $80 млрд, побив рекорды технологических гигантов
Умное кольцо Natura Interface для общения с ИИ: стартап представил гаджет для разговоров с голосовым помощником