Написать в блог
Блоги
Global_Chronicles

Текст опубликован в личном блоге и его автор не имеет отношения к администрации сайта

Cloudflare уменьшила количество хешей серверов с 100 000 до 10 000. Это позволило сэкономить около 100 ТБ оперативной, при этом равномерность распределения запросов не пострадала.
реклама

Cloudflare удалось значительно сократить потребление оперативной памяти. Компания пересмотрела алгоритм распределения запросов между серверами.

Источник изображения: Cloudflare / Инна Фассбендер

Один из крупнейших сценариев использования Cloudflare — кэширование данных. Чтобы быстро отдавать контент, компания хранит его в памяти или на диске, а не запрашивает с живого сайта каждый раз. Для этого используется собственный открытый фреймворк Pingora и алгоритм Ketama. Задача проста: сопоставить произвольный URL с одним из множества кэширующих серверов.

реклама

На практике это требует больших таблиц в памяти. Входящий URL хешируется, и полученное число отправляется на сервер. Чтобы одни и те же URL попадали на одни и те же серверы, хеш сервера сопоставляется с хешем URL по числовой близости. Если сервер выходит из строя, его запросы нужно перераспределить между оставшимися. Для этого каждому серверу добавляют множество хешей со случайным распределением. Чем больше хешей, тем равномернее нагрузка.

Проблема в том, что такие таблицы занимают много памяти. В Cloudflare на одну машину приходилось до 100 000 хешей серверов, что сильно раздувало требования к RAM. Инженеры проанализировали ситуацию и пришли к выводу, что дальнейшее увеличение числа хешей не дает заметного выигрыша. Оказалось, что 10 000 хешей дают почти тот же результат, а частота ошибок практически не снижается после этого порога.

Дополнительно команда оптимизировала структуры данных в Rust, сэкономив 2 байта на каждую запись в таблице соответствия хешей и серверов. На первый взгляд это мелочь, но при миллиардах записей экономия становится ощутимой. В сумме эти изменения позволили высвободить около 100 ТБ оперативной памяти.

Чтобы подстраховаться, новый алгоритм добавили как отдельный код-путь v2, а не заменили старый полностью. Это дает возможность быстро вернуться к прежней версии, если что-то пойдет не так.

Источник: tomshardware.com
Теперь в новом формате

Наш Telegram-канал @overclockers_news
Подписывайся, чтобы быть в курсе всех новостей!

Популярные новости