2015-06-24 1 views
0

Я хочу реализовать сервис для большого количества устройств. Эта служба должна иметь возможность отправлять/получать (малые - не более 1 кБ) сообщения между сервером и клиентом, а также p2p между устройством и устройством.MQTT как централизованный протокол связи

На данный момент я думаю о достижении этого с помощью MQTT, поскольку это, по-видимому, легкий протокол генерации трафика. Как указано в этом question XMPP также может быть альтернативой, но я не уверен, что это дает мне производительность, в которой я нуждаюсь.

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

  1. Малый Накладные
  2. Small Payload
  3. Большое количество клиентов (начиная с 100.000)
  4. Ручки нестабильная сетевого подключения
  5. Масштабируемость например, с использованием нескольких экземпляров брокера
  6. P2P Соединения между клиентами (могут быть решены с пораженным сервером)
  7. Если возможные реализации с открытым исходным кодом в Java, JavaScript и C++

ли MQTT правильного подхода для меня, или я должен лучше смотреть на некоторых альтернативах? Имейте в виду, что мне нужно создать высоко масштабируемый сервис.

+2

Звучит хорошо. У меня было аналогичное решение сделать и решил использовать MQTT. MQTT менее «болтливый», чем XMPP – Marged

+0

Так вы рассмотрели другой протокол, который предлагает ту же функциональность? На данный момент я также просматриваю HTTP-опрос. – Haves

+2

@ Да, но я сбрасывал XMPP и длительный опрос (и JMS ...) – Marged

ответ

1

Я думаю, что все ваши ожидания за исключением 6. может быть выполнено с помощью MQTT, если вы используете его правильно. Вы должны взглянуть на http://www.eclipse.org/paho/ и http://mosquitto.org/ для реализации OpenSource.

Поскольку MQTT имеет архитектуру публикации подписки, где каждое сообщение отправляется и распространяется брокер-сообщение (сервер), P2P может быть проблемой. Вы можете использовать выделенный раздел для каждого соединения между двумя клиентами, но сообщениям все равно придется проходить через брокера сообщений. В качестве обходного пути вы можете согласовать соединение P2P между клиентами через MQTT, а затем использовать согласованный канал с другим протоколом.

+0

Спасибо за ввод! Я уже думал использовать это обходное решение, так как это также предотвратит любые проблемы NAT, которые могут возникнуть. Пахо - хорошее предложение (я думаю), спасибо за это тоже. – Haves

1

Как указано выше, с помощью MQTT у вас есть все необходимые функции, а точка 6 достигается с помощью брокера. Большой недостаток для MQTT заключается в том, что он не поддерживает шаблон запроса/ответа изначально (например, HTTP или AMQP), но полностью поддерживает шаблон публикации/подписки. Конечно, если вам нужен запрос/ответ, вам нужно сделать это в слое над самим протоколом, определяющим правильные темы и полезную нагрузку, чтобы создать логику соответствия/корреляции между запросом и ответом.

Paolo.

 Смежные вопросы

  • Нет связанных вопросов^_^