Первое сообщение не доходит до подписанного актера
У нас есть платформа обмена сообщениями, построенная на основе Akka (2.5) с использованием кластера akka и распределенного Pubsub. В настоящее время у нас есть кластер из 25 серверов. Сценарий следующий.
- Actor1, созданный на Server1, подписывается на тему Chat1.
- Actor2, созданный на Server2, публикует сообщение через Chat1 (примерно через 100 мс подписки)
- Иногда 1-е сообщение не принимается Actor1, но всегда поступают последующие сообщения.
Мы можем сделать вывод, что это происходит из-за того, что подписка занимает некоторое время для регистрации на всех узлах кластера. Вот действия, которые мы предприняли, чтобы решить эту проблему -
- Уменьшен интервал сплетен с 1 секунды (по умолчанию) до 50 мс.
- Добавлена задержка еще на 400 мс, что дает кластеру всего 500 мс для регистрации подписки. Это снизило вероятность возникновения проблемы, но по-прежнему встречается довольно часто (в 1/6 раза).
Здесь так мало вопросов -
- Ожидается ли, что Pubsub займет более 400 мс в кластере всего из 25 (это тоже в частной сети серверов в том же центре обработки данных)
- Есть ли в akka дополнительные настройки, которые могут помочь в настройке времени, необходимого для распространения подписки.
- Какие у нас есть возможности для отслеживания среднего времени, затрачиваемого Pubsub на распространение подписки в кластере? Это поможет получить правильную оценку задержки, которая будет введена (если это вообще необходимо).
- Если вышеупомянутая задержка ожидается, существуют ли какие-либо обходные пути, которые использовались кем-то в прошлом для решения этой проблемы.