Как стать автором
Обновить
104.7
VAS Experts
Разработчик платформы глубокого анализа трафика

Если нужно обновить программный билд — обсуждаем Wharf

Время на прочтение2 мин
Количество просмотров1.1K

Это — специализированный протокол для инкрементального обновления ПО с минимальными задержками. Расскажем, как он устроен, и кто его использует.

Alex Kotliarskyi / Unsplash.com
Alex Kotliarskyi / Unsplash.com

Что за Wharf, и почему он появился

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

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

Что под капотом

Решение использует открытую спецификацию для патчей и сигнатурных файлов на базе protobuf. Также в основе diff- и patch-алгоритмов протокола лежит rsync. 

Первый алгоритм описывает механизм для вычисления различий между двумя контейнерами (так авторы называют наборы файлов и папок). Каждый файл разбит на блоки в 64 Кбайта. Система сканирует измененные файлы на наличие кусочков с содержимым, совпадающим со имеющейся версией, а затем сохраняет их смещение и индекс файла внутри контейнера. Когда похожие блоки заканчиваются, свежие данные пишутся в патч секциями по 4 Мбайта.

Что касается второго алгоритма, то он непосредственно отвечает за обновление версии контейнера и его запись на диск. Создает отсутствующие директории и файлы, генерирует необходимые симлинки. Если вы хотите поближе познакомиться с этим протоколом и использовать его, неплохой стартовой точкой будет документация. Внести туда дополнения можно с помощью pull-запросов в репозитории на GitHub.

Больше открытых альтернатив

Существуют и другие инструменты для применения патчей — например, open source библиотеки bsdiff/bspatch. Они работают с бинарными файлами и были разработаны инженером Колином Персивалем из Оксфордского университета.

Первая утилита сравнивает старые и измененные файлы, а затем сохраняет отличия в виде двоичного патча. За его применение и развертку уже отвечает bspatch.

Еще один алгоритм для установки обновлений — Courgette. Правда, он заточен под работу с патчами для браузера Chrome. Что интересно, авторы разработали его в качестве альтернативы уже упомянутого bsdiff. Исходный код проекта можно найти на Google Git, и в него до сих вносят дополнения.


Больше о нестандартных решениях, работе провайдеров, протоколах, ИТ-стандартах — в нашем корпоративном блоге:


Теги:
Хабы:
Всего голосов 8: ↑5 и ↓3+2
Комментарии0

Публикации

Информация

Сайт
www.vasexperts.ru
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия