Cloudflare: сжатие Zstandard в Pingora может сэкономить петабайты кэш-хранилища
We could save petabytes of cache storage with Zstandard and Pingora

В Cloudflare прототипировали систему Cache Transcoding, которая сжимает подходящие активы алгоритмом Zstandard (zstd) прямо в кэше, внутри прокси-сервера Pingora. В среднем это уменьшает размер объектов на диске втрое, а также сокращает трафик между дата-центрами. Цена — небольшой рост нагрузки на CPU. Эксперимент с более чем миллионом запросов подтвердил: архитектура работает в рамках бюджета CPU и может существенно расширить эффективную ёмкость кэша без закупки нового оборудования.
Небольшое увеличение CPU даёт Cloudflare петабайты эффективной ёмкости кэша и сокращает объём данных, передаваемых между нашими дата-центрами.
- r3trohack3r
Небольшое отступление: несколько лет назад я применил похожий подход, чтобы сжать npm-реестр более чем на 90% на диске. Поскольку большинство версий пакета похожи, можно сначала применить дельта-кодирование, а затем сжать. Дельты получаются небольшими и хорошо сжимаются в совокупности с исходными файлами.
Для другого случая использования, перед сжатием я применял скользящий хэш для детерминированного разбиения файла. Затем сжимал фрагменты и сохранял их в файловой системе CID. В результате файлы, которые в значительной степени похожи, разделяют сжатые фрагменты.
Мы можем сделать много вещей, чтобы существенно повысить эффективность использования компьютеров, но инженеры часто стоят дороже, чем оборудование. С недавними ограничениями в цепочке поставок эта арифметика меняется!
- thinkindie
Почему бы не отдавать файлы сжатыми, если клиент это поддерживает, даже если источник отдал несжатый файл?
- CodesInChaos
Меня смущает, как это влияет на запросы с диапазонами. Без сжатия их легко удовлетворить, прочитав нужную часть полного кэшированного файла. Но как они обрабатываются сейчас? В статье утверждается, что "запросы с диапазонами остаются без изменений", но я не понимаю, как это возможно, если кэш больше не хранит несжатые данные.