Первое сообщение не доходит до подписанного актера

У нас есть платформа обмена сообщениями, построенная на основе Akka (2.5) с использованием кластера akka и распределенного Pubsub. В настоящее время у нас есть кластер из 25 серверов. Сценарий следующий.

  1. Actor1, созданный на Server1, подписывается на тему Chat1.
  2. Actor2, созданный на Server2, публикует сообщение через Chat1 (примерно через 100 мс подписки)
  3. Иногда 1-е сообщение не принимается Actor1, но всегда поступают последующие сообщения.

Мы можем сделать вывод, что это происходит из-за того, что подписка занимает некоторое время для регистрации на всех узлах кластера. Вот действия, которые мы предприняли, чтобы решить эту проблему -

  1. Уменьшен интервал сплетен с 1 секунды (по умолчанию) до 50 мс.
  2. Добавлена ​​задержка еще на 400 мс, что дает кластеру всего 500 мс для регистрации подписки. Это снизило вероятность возникновения проблемы, но по-прежнему встречается довольно часто (в 1/6 раза).

Здесь так мало вопросов -

  1. Ожидается ли, что Pubsub займет более 400 мс в кластере всего из 25 (это тоже в частной сети серверов в том же центре обработки данных)
  2. Есть ли в akka дополнительные настройки, которые могут помочь в настройке времени, необходимого для распространения подписки.
  3. Какие у нас есть возможности для отслеживания среднего времени, затрачиваемого Pubsub на распространение подписки в кластере? Это поможет получить правильную оценку задержки, которая будет введена (если это вообще необходимо).
  4. Если вышеупомянутая задержка ожидается, существуют ли какие-либо обходные пути, которые использовались кем-то в прошлом для решения этой проблемы.

0 ответов

Другие вопросы по тегам