deltamesh

Считаем разницу, а не пересылаем состояние целиком

Библиотека для потокового сравнения больших структурированных документов. Вместо мегабайта JSON по сети едет полтора килобайта изменений.

Как это устроено Внедрение

Зачем

Типичная история: сервис раз в секунду отдаёт клиенту полное состояние на 900 КБ, из которого меняются три поля.

Меньше трафика

На наших нагрузках — падение объёма в 40–200 раз в зависимости от того, насколько документ статичен.

Меньше задержка

Diff считается по мере поступления данных, ждать конца документа не нужно.

Предсказуемая память

Потребление зависит от глубины вложенности, а не от размера документа.

Замеры

Документ 1,2 МБ, меняется 0,4% полей. Одно ядро.

ПодходБайт по сетиВремяПамять
Полное состояние1 248 0002 мс3,6 МБ
JSON Patch (после разбора)6 10031 мс9,1 МБ
deltamesh5 4007 мс1,2 МБ