/hashgossip

Primary LanguageGoMIT LicenseMIT

hashgossip

Пример упрощенной реализации gossip-протокола для децентрализованной передачи сообщений между узлами.

Каждый узел генерирует случайные сообщения с контрольной суммой.

Локальное хранилище узла ограничено одним сообщением, поэтому сохраняется только сообщение с самой "большой" контрольной суммой. После завершения сеанса связи у всех узлов должно быть одинаковое сообщение в локальном хранилище.

Конфигурация

Настройки хранятся в файле config.toml.

# Адрес для первичного поиска пиров и обмена служебными сигналами
MulticastAddress = "224.0.0.1:9999"
# Максимальное количество сообщений за сеанс выбарается рандомно из диапазона [0:LimitMessages]
LimitMessages = 10
# Примерный процент "испорченных" сообщений [0:100]
InvalidFrequent = 5

Быстрый старт

go get github.com/DemonVex/hashgossip

Сборка бинарника

make build

Запуск N экземпляров приложения. Каждый экземпляр пишет логи в отдельный файл в папке _logs

make N={num} run
e.g. make N=10 run

Снимок содержимого локальных хранилищ (через multicast запрос)

make watcher

Отправить всем узлам (через multicast) запрос на завершение работы

make kill

Отправить сигнал kill и почистить папку с логами

make clean