как настроить балансировщик нагрузки для кластерных MQTT-брокеров - PullRequest
1 голос
/ 13 января 2020

Я работаю над проектом по разработке приложения для обмена мобильными сообщениями в режиме реального времени, которое должно иметь расширенную фильтрацию сообщений на основе содержимого сообщения и баланса пользователя, что означает, что если у пользователя исчерпан баланс или он отправляет контент, который нарушает политика, в которой сообщения должны быть заблокированы.

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

Сложная часть: Мобильное приложение должно получать подписку сообщений (подтверждение соединения тоже) без прохождения через балансировщик нагрузки (см. Мой следующий пункт).

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

Как я могу выполнить sh это? (если это поможет, мой текущий дизайн включает Java компонент с пружинной загрузкой для балансировки нагрузки и VerneMQ в качестве посредника сообщений)

1 Ответ

1 голос
/ 14 января 2020

Попробуйте

Мобильное приложение -> MQTT-брокер -> Алгоритм сканирования / блокировки сообщений -> MQTT-брокер -> Подписчик.

Ваше мобильное приложение должно обладать интеллектом для остановки сообщений, когда приложение выходит из баланса после первого сообщения.

Таким образом, MQTT-брокер не должен отправлять сообщение своему подписчику непосредственно на своем уровне. Он должен отправить сообщения, которые были получены после обработки.

Не уверен, что у кого-нибудь есть готовое решение для этого потока. Но выполнимо.

...