- PVSM.RU - https://www.pvsm.ru -

Протокол Railgun для сжатия трафика

Протокол Railgun для сжатия трафика

CDN-провайдер CloudFlare в прошлом году разработал протокол Railgun [1] для сжатия сетевого трафика. Бинарный протокол, написанный на языке программирования Google Go, передаёт хэши веб-страниц и diff’ы между ними, с поддержкой версионности. После внедрения этой технологии степень сжатия в некоторых случаях достигает 99.6%, что недостижимо с помощью gzip. Сайты 4Chan и Imgur после внедрения Railgun сократили некэшируемый трафик примерно на 50% [2].

Сейчас компания CloudFlare объявила [3], что поддержка протокола реализована также у Amazon Web Services и около 30 крупнейших хостинговых компаний. Поставить Railgun теперь как никогда просто: есть плагины для WordPress, Joomla, Drupal и прочих CMS, выпущены пакеты для большинства популярных дистрибутивов Linux и BSD.

Любой CDN-провайдер старается кэшировать максимальное количество контента. Но в реальности закэшировать можно только около 66% объектов, а остальные 34% приходится заново запрашивать с сервера в случае обновления. Для сжатия этого трафика и был создан Railgun.

Протокол Railgun для сжатия трафика

В Railgun используются примерно такие же алгоритмы, как при обработке последовательности кадров в видео высокой чёткости. Высокая степень сжатия в видеокодеках достигает за счёт сжатия не отдельных кадров, а отличий между соседними кадрами. Это позволяет сжать кадр размеров миллионы пикселов в несколько килобайт. Теоретически можно его сжать вообще в один байт, если он ничем не отличается от предыдущего кадра. То же самое с веб-страницами. При изменении веб-страницы в реальности меняется только небольшая часть, и достаточно передать изменение между актуальной версией и той, которую клиент получил в предыдущий раз.

Технически, Railgun состоит из двух компонентов: отправителя (sender) и получателя (listener). Отправители установлены в каждом дата-центре CDN-сети CloudFlare по всему миру. Получатель — программный компонент, который предоставляется коммерческим партнёрам CloudFlare. Между отправителем и получателем устанавливается TCP-соединение, защищённое TLS, по которому бинарный протокол Railgun осуществляет асинхронную передачу HTTP-запросов. Для веб-клиента система Railgun выглядит как прокси-сервер, хотя на самом деле это специализированная система со специфическими функциями. Одна из них — сжатие контента, который невозможно кэшировать, за счёт синхронизации версий страниц. При обновлении версии страницы по сети передаётся только изменение между предыдущей и новой версией.

Протокол Railgun для сжатия трафика

Тестирование показали, что максимальное сжатие достигается на новостных сайтах с большой посещаемостью. Например, бинарное сравнение главной страницы сайта reddit.com показывает изменение в среднем 2,15% в течение 5 минут и 3,16% в течение часа. Главная страница The New York Times бинарно изменяется на 0,6% за пять минут и на 3% в течение часа. Для главной страницы BBC News эти показатели составляют 0,4% и 2%, соответственно. Вообще, для самых популярных сайтов при повторном запросе diff иногда настолько мал, что помещается в одном пакете TCP.

Автор: alizar

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/protokol/28237

Ссылки в тексте:

[1] разработал протокол Railgun: http://blog.cloudflare.com/cacheing-the-uncacheable-cloudflares-railgun-73454

[2] примерно на 50%: http://arstechnica.com/information-technology/2013/02/cloudflare-blows-hole-in-laws-of-web-physics-with-go-and-railgun/

[3] объявила: http://blog.cloudflare.com/cloudflares-railgun-easier-than-ever

[4] Источник: http://habrahabr.ru/post/170959/