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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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, и в него до сих вносят дополнения.


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

  • DNS-over-HTTPS — как идет адаптация

  • Что там с внедрением IPv6

  • P2P-протокол Dat — как работает и кем используется

  • CG-NAT — зачем нужен и как начать пользоваться


Источник: https://habr.com/ru/company/vasexperts/blog/664542/


Интересные статьи

Интересные статьи

К 1 апреля собрали хит-парад самых глупых инцидентов ИБ за годНовое 1 апреля и новый дайджест самых смешных инцидентов информационной безопасности. За год ИБ-нелепиц приб...
Решил сегодня поделиться с сообществом небольшой статьей, продолжающей знакомство с ортопедией и биомеханикой. Тема разговора – мениски коленного сустава. Что это такое, зачем они нужны, почему о...
Начиная с 2018 года, пятьсот самых высокопроизводительных систем в мире работают на Linux. Обсуждаем причины сложившейся ситуации и приводим мнения экспертов.
Несмотря на то, что “в коробке” с Битриксом уже идут модули как для SOAP (модуль “Веб сервисы” в редакции “Бизнес” и старше), так и для REST (модуль “Rest API” во всех редакциях, начиная с...
TODO-приложение во фронтенд-разработке — это то же самое, что «Hello world» в обычном программировании. При создании TODO-приложений можно изучить выполнение CRUD-операций средствами того или ино...