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





![Распределенные структуры данных [часть 1, обзорная] - 1 Распределенные структуры данных [часть 1, обзорная] - 1](https://www.pvsm.ru/images/2017/05/24/raspredelennye-struktury-dannyh-chast-1-obzornaya.png)

![[Санкт-Петербург] Андрей Ершов — CRDT. Бесконфликтная синхронизация данных - 1 [Санкт-Петербург] Андрей Ершов — CRDT. Бесконфликтная синхронизация данных - 1](https://www.pvsm.ru/images/2017/05/22/sankt-peterburg-andrei-ershov-CRDT-beskonfliktnaya-sinhronizaciya-dannyh.png)