Есть n Узлы в кластере. Файлы могут быть загружены на любой узел, а затем должны быть распределены между собой. Этот дистрибутив не должен происходить в транзакции (на самом деле он не должен, распределенные транзакции не масштабируются), и некоторая латентность приемлема, хотя должна быть минимальной. Конфликты могут быть разрешены произвольно (как правило, последние победы записи) при условии, что разрешение также распространяется на все узлы, так что в конечном итоге все узлы имеют одинаковый набор файлов. Узлы могут быть добавлены и удалены динамически без необходимости перенастройки существующих узлов. Не должно быть единственной точки отказа и никаких дополнительных ящиков, необходимых для ее решения (например, RabbitMQ)Синхронизация файлов между n веб-серверами в кластере
Я думаю о линиях использования consul.io для динамической конфигурации, чтобы каждый узел мог ссылаться на консула, чтобы определить, что доступны другие узлы и запись демона (Golang), который контролирует соответствующие папки и связывается с другими узлами с помощью ZeroMQ.
Чувства, как будто я буду изобретать колесо. Это распространенная проблема, и я ожидаю, что уже есть решения, о которых я не знаю? Или, может быть, мой подход неправильный, и есть другой способ решить это?