Cloudflare высвободила 100 ТБ оперативной памяти изменением всего нескольких строк кода

Прокомментировать Просмотры: 10

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

Изображение сгенерировано Gemini
Источник изображения: Gemini

Инфраструктура Cloudflare активно задействует кеширование контента, позволяя мгновенно отдавать запрошенные страницы с ближайшего сервера без отправки повторных запросов на первоисточник. За выбор оптимального узла отвечает алгоритм Ketama, функционирующий на базе согласованного хеширования.

Механизм преобразует адрес веб-страницы в цифровое значение и соотносит его с картой серверов. Каждому физическому компьютеру при этом присваивается множество виртуальных маркеров, хаотично разбросанных по кольцевой шкале хешей. Подобный подход гарантирует бесшовное перенаправление трафика в случае сбоя или отключения одного из узлов.

По мере масштабирования сети на каждый сервер стало приходиться порядка 100 000 таких виртуальных позиций. Ситуацию усложняла необходимость учитывать пропускную способность оборудования, географическое расположение и специфические ограничения, из-за которых определенные запросы обрабатывались только на выделенных узлах. В итоге служебные таблицы маршрутизации начали поглощать колоссальные объемы RAM.

Углубленный статистический анализ показал, что столь избыточное количество виртуальных точек практически не повышает эффективность балансировки. Выяснилось, что после преодоления порога в 10 000 маркеров дальнейший рост их числа приносит лишь микроскопические улучшения в равномерности распределения нагрузки.

Эксперты компании снизили плотность виртуальных точек приблизительно вдесятеро без малейшего ущерба для отказоустойчивости. Следом они провели рефакторинг структур данных на языке Rust, урезав размер каждой пары «хеш — сервер» ровно на два байта. В масштабах отдельной записи это микроскопическая величина, однако при миллиардах элементов она трансформируется в гигантский объем сэкономленной памяти.

Комплекс проведенных мер позволил сократить потребление RAM почти на 100 ТБ. Чтобы минимизировать риски, обновление внедряли постепенно: новый вариант алгоритма запустили параллельно со старым, предусмотрев мгновенный откат на случай непредвиденных сбоев.

Стоит отметить, что для Cloudflare это далеко не первый опыт столь масштабной экономии ресурсов за счет локальных программных улучшений. Ранее инженеры компании уже высвобождали около 100 ТБ оперативной памяти, просто переработав формат хранения записей в DNS-кеше популярного резолвера 1.1.1.1.

 

Источник: iXBT

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов