1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/recallcode-iot-mqtt-server

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Проект IoT-MQTT-Server

Проект

Лёгкий сервер интернета вещей (IoT) MQTT, быстрый в развёртывании и поддерживающий кластеризацию.

Архитектура программного обеспечения

Реализован на основе стека технологий Netty + SpringBoot + Ignite:

  1. Netty используется для реализации связи и анализа протоколов.
  2. SpringBoot предоставляет функции внедрения зависимостей и настройки свойств.
  3. Ignite используется для хранения данных, распределённых блокировок, кластеризации и межкластерного взаимодействия.

Структура проекта

iot-mqtt-server
├── mqtt-auth — аутентификация при подключении к MQTT-сервису по имени пользователя и паролю
├── mqtt-broker — ядро функциональности MQTT-сервера
├── mqtt-common — общие классы и интерфейсы для других модулей
└── mqtt-store — постоянное хранение информации о сеансах, темах и т. д. для MQTT-сервера

Функциональность

  1. Реализовано в соответствии с MQTT 3.1.1.
  2. Полностью реализованы уровни качества обслуживания QoS.
  3. Поддерживаются завещательные сообщения, сохранённые сообщения и повторная рассылка сообщений.
  4. Есть механизм сердцебиения.
  5. Обязательная аутентификация соединения.
  6. Соединение только по SSL, без поддержки не-SSL соединений.
  7. Частичная реализация фильтрации тем: темы, начинающиеся с # или +, а также заканчивающиеся /, обрабатываются как незаконные подписки.
  8. Поддержка WebSocket.
  9. Кластеризация.

Быстрый старт

  • Скачайте готовый исполняемый jar-файл https://gitee.com/recallcode/iot-mqtt-server/releases.
  • Запустите jar-файл. Если нужно изменить настройки, создайте файл config/application.yml в том же каталоге.
  • Откройте клиент mqtt-spy, настройте его https://github.com/eclipse/paho.mqtt-spy/wiki/Downloads.
  • Порт подключения: 8885, порт WebSocket: 9995, путь WebSocket: /mqtt.
  • Имя пользователя для подключения: testOne.
  • Пароль для подключения: 6156ADE136B3BF385B595CF3A69BFAFF2D6AFE87FF3EE1B49224F51D0259B00B014BA7771064E9F46CBF67F27780AABCCC1C252142397FEE8316A91CB0C52176.
  • Сертификат для подключения mqtt-broker.cer.

Кластеризация

В настоящее время поддерживается кластеризация через многоадресную рассылку и статические IP-адреса (одновременно использовать многоадресную рассылку и статический IP нельзя).

  • Для многомашинных кластеров: настройте spring.mqtt.broker.id в application.yml, чтобы обеспечить уникальность этого значения в кластере.
    • Многоадресная рассылка: настройте spring.mqtt.enable-multicast-group=true и spring.mqtt.multicast-group=групповой адрес.
    • Статические IP-адреса: настройте spring.mqtt.enable-multicast-group=false и spring.mqtt.static-ip-addresses=несколько IP через запятую.
  • В одномашинном кластере: помимо вышеуказанных настроек, необходимо изменить соответствующие порты, чтобы избежать конфликтов портов.

Пользовательская настройка — аутентификация подключения

По умолчанию используется простое шифрование имени пользователя с помощью RSA-ключа для генерации пароля. При аутентификации подключения пароль расшифровывается и сравнивается с соответствующим именем пользователя. Если требуется реализовать аутентификацию подключения через базу данных или другим способом, достаточно переписать соответствующие методы в модуле mqtt-auth.

Пользовательская настройка — сертификат сервера

Сертификат сервера хранится в файле mqtt-broker/resources/keystore/mqtt-broker.pfx. Пользователи могут создавать свои собственные сертификаты, но они должны храниться в указанном месте и иметь указанное имя файла.

Развёртывание в производственной среде

Рекомендуется использовать конфигурацию keepalived + nginx + mqtt-broker для развёртывания в производственной среде. Nginx используется как обратный прокси для балансировки нагрузки между mqtt-brokers в кластере с использованием TCP и WebSocket. Keepalived обеспечивает высокую доступность nginx.

  • Изображение для mqtt-broker можно создать с помощью Dockerfile в модуле.
  • При развёртывании контейнеров с помощью docker run необходимо добавить параметр --net=host.
  • Пример команды запуска: docker run --name=mqtt-broker-service --net=host --restart=always --env-file=/home/rancher/mqtt-broker/env.list -v /home/rancher/mqtt-broker/config/:/opt/mqtt-broker/config/ -v /home/rancher/mqtt-broker/persistence/:/opt/mqtt-broker/persistence/ -d mqtt-broker:1.5.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкий интернет вещей MQTT-сервер, быстрое развёртывание, поддержка кластера. Развернуть Свернуть
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/recallcode-iot-mqtt-server.git
git@api.gitlife.ru:oschina-mirror/recallcode-iot-mqtt-server.git
oschina-mirror
recallcode-iot-mqtt-server
recallcode-iot-mqtt-server
master