В gossip узлы периодически обмениваются сведениями с частью соседей, распространяя состояние по кластеру. Отсутствие ответа вызывает подозрение в отказе, но не доказывает физическую смерть узла.
Как устроен алгоритм Gossip Protocol в децентрализованных системах, например в кластерах Redis или Cassandra? Как узлы кластера узнают о смерти соседа без единого координирующего сервера и за какое время информация распространяется по сети?
В gossip узлы периодически обмениваются сведениями с частью соседей, распространяя состояние по кластеру. Отсутствие ответа вызывает подозрение в отказе, но не доказывает физическую смерть узла.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В gossip узлы периодически обмениваются сведениями с частью соседей, распространяя состояние по кластеру. Отсутствие ответа вызывает подозрение в отказе, но не доказывает физическую смерть узла.
Информация расходится постепенно, а скорость зависит от числа контактов, периода обмена и потерь сети; универсального времени в секундах нет. При благоприятных условиях эпидемическое распространение требует порядка логарифмического числа раундов. Cassandra использует gossip и вероятностный детектор отказов; Redis Cluster имеет собственный протокол и правила подтверждения отказа. Разделение сети может выглядеть как отказ, поэтому обнаружение недоступности и безопасное переназначение ответственности — разные задачи.
Источник: Документация Apache Kafka.