Cloudflare вновь сэкономила 100 ТБ оперативной памяти, снизив объем серверных хешей на 90%.
Сокращение количества записей со 100 000 до 10 000 позволило устранить значительное разрастание кеша.
Компания Cloudflare достигла экономии в 100 ТБ оперативной памяти, на этот раз оптимизировав алгоритм хеш-маппинга. Одним из крупнейших направлений деятельности компании является кэширование данных, а именно подача URL напрямую из памяти или диска вместо их получения с рабочего сайта, что может занимать значительное время. Для задачи сопоставления произвольного URL с одним из серверов кэша компания использует собственный открытый фреймворк Pingora и алгоритм Ketama. Эта задача проста в концепции, но становится сложной в среде, где серверы постоянно появляются и исчезают, а при масштабах Cloudflare сложность возрастает еще больше.
Маршрутизация на бэкенд, то есть сопоставление URL с одним из множества серверов кэша, требует хранения в памяти большого количества таблиц. Входящий URL хешируется аналогично обработке файлов с помощью CRC-32, и полученное число направляется на сервер. Первой интуицией является последовательная обработка, когда один URL соответствует одному серверу, однако возникает первая проблема: одинаковые URL не направляются на одни и те же серверы. В связи с этим создается хеш, соответствующий серверу, например на основе его IP-адреса и имени, и оба хеша сопоставляются по числовой близости.


