Как работает протокол сплетен cassandra и phi_threshold?

#cassandra #gossip

#кассандра #сплетни

Вопрос:

Текущая настройка, cassandra 2.2.5, gossip составляет 1 секунду по умолчанию, а пороговое значение phi равно 8. Проблема, с которой я сталкиваюсь, — это всплески в подсказках. И одна из причин, по которой подсказки увеличиваются, заключается в том, что узел помечен (сплетни не сообщали о пороговом значении phi).

Я прочитал одну статью, где говорится, что пороговое значение phi, равное 8, соответствует 18 секундам, здесь или там будет несколько секунд. Теперь мне нужно понять, в чем причина, что блокирует сплетни для общения в течение 18 секунд. Какой контрольный список необходимо выполнить, чтобы сплетни могли обмениваться данными?

Ответ №1:

  • Re: «Как работает протокол сплетен cassandra и phi_threshold?»: Phi аппроксимируется как: phi = (tnow - tLast) / mean и узел помечается, когда phi > phi_threshold / 0.434 . Для ваших настроек (и при условии, что среднее значение равно 1 [как в узле, который обычно получает сердцебиение с интервалом в 1 секунду]) узел будет помечен, если мы не получали от него никаких сердцебиений в течение 8 / 0.434 = 18.42 нескольких секунд. Документ, документирующий алгоритм, можно найти здесь .

  • Re: «Каков контрольный список, который необходимо выполнить, чтобы сплетни могли общаться?»: для меня есть несколько вещей:

    • сеть: сообщения сплетен отбрасываются или порт сплетен (7000/7001) блокируется;
    • сами узлы: узлы заняты / не отвечают (т. Е. Выполняют GC, Выполняют некоторые операции с большой нагрузкой), поэтому они не могут отправлять какие-либо / много сообщений о сплетнях.

Комментарии:

1. Можно настроить Gossip для использования другого порта?

2. Это значение storage_port конфигурации. Для меня было бы разумнее открыть порт 7000 в вашем брандмауэре перед изменением значения.

3. У нас открыто 7000, меня беспокоит то, что из-за перегрузки порта хранения сообщения о сплетнях не передаются, и это заставляет полагать, что другие узлы считают, что этот узел не работает, и в результате создается много подсказок. Итак, я подумал, что если gossip сможет работать на другом порту, это упростит задачу.

4. Я сомневаюсь, что изменение порта будет иметь большое значение, это будет тот же трафик. Или, может быть, я неправильно понимаю, что вы подразумеваете под перегрузкой. Кроме того, когда вы говорите hints goes up , какая это метрика? TotalHintsInProgress ?

5. Да, порт 7000 используется для любого обмена данными между узлами C * (сплетни, потоковая передача данных, координация, …). Изменение значения storage_port приведет не только к тому, что трафик сплетен будет передаваться на этот другой порт, это просто означает, что весь трафик обмена сообщениями между узлами C * происходит сейчас на этом другом порту.