Является ли наличие канала на пользователя хорошей идеей в MQTT? - PullRequest
0 голосов
/ 28 августа 2018

Я разрабатывал систему чата для компании и использовал много инструментов, доступных для этого. Одно из моих самых интересных путешествий было через Pheonix framework (Elixer Language! Phew)

В итоге я использовал сервер на основе MQTT для управления чатом. Я использовал MQTT для нескольких устройств связи, которые я сделал для проектов IoT. Использовал сервер EMQ для моего брокера и эту библиотеку js для FE и BE. Настройка была легкой прогулкой.

Теперь у меня было несколько вопросов, когда я добавлял еще несколько функций. Как мне масштабировать соотношение каналов и сообщений. Сколько подписок слишком много подписок?

У меня будет доступ к использованию, поэтому у меня будут данные для его использования Любой текст на них будет принят.

Добавление нескольких фактов о приложении. Чат используется в приложении, которое проводит встречи. Вот некоторые приблизительные цифры для того же.

Average size of a meeting = 25 people (Can go upto 10,000)
Average number of meetings a day = 50 (currently)
Messages per minute in a meeting = 20

1 Ответ

0 голосов
/ 05 сентября 2018

Сколько подписок - слишком много подписок?

Это зависит от инфраструктуры и ресурсов, имеющихся у вас для построения кластера.

Это ссылка на официальную документацию по созданию кластера EMQ.

Кластерная архитектура emqttd-брокера основана на распределенной Erlang / OTP и база данных Mnesia.

Проект кластера можно обобщить по следующим двум правилам:

  1. Когда MQTT-клиент ПОДПИСЫВАЕТ тему на узле, узел сообщит все другие узлы в кластере: я подписался на тему.
  2. Когда MQTT Клиент ОПУБЛИКОВАТЬ сообщение на узел, узел будет искать тему таблица и переслать сообщение узлам, которые подписались на тему. Наконец, будет глобальная таблица маршрутов (Тема -> Узел), которая реплицируется на все узлы в кластере:

    topic1 -> node1, node2

    topic2 -> node3

    topic3 -> node2, node4

---------         ---------
| Node1 | --------| Node2 |
---------         ---------
    |     \     /    |
    |       \ /      |
    |       / \      |
    |     /     \    |
---------         ---------
| Node3 | --------| Node4 |
---------         ---------
...