Хм, будьте осторожны, когда делаете что-то подобное, на практике они никогда не работают хорошо. Первая проблема - это большой объем сетевого трафика, который вы создаете, который никогда не масштабируется хорошо. Более серьезно, вы столкнетесь с огромными проблемами параллелизма. По определению, уведомление «данные изменены» будут доставлены с опозданием, и нет гарантии, что они будут заказаны. Все работает хорошо, если между уведомлениями имеется достаточно длительная задержка, позволяющая подсистемам иметь синхронизированное представление данных.
Но этот карточный домик рушится, когда нагрузка увеличивается, и уведомления начинают буферизироваться. Подсистема начнет принимать решения по старым представлениям данных и выйдет из синхронизации с представлениями других подсистем. Вы ничего не можете с этим поделать, вы не можете "заблокировать" через сеть. Чрезвычайно сложно отладить, несовпадения синхронизации абсолютно случайны и ложны.
Использование централизованного сервера, с параллелизмом работать намного проще.