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

OSCHINA-MIRROR/wizzer-MqttWk

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

MqttWk — by netty

GitHub release

License

PowerByNutz

Этот проект является открытым и бесплатным. Мы приглашаем к общению и обучению, а также к участию в разработке.

MqttWk

  • QQ группа: 225991747

Руководство по разработке

Техническая система

  1. Коммуникация и анализ протокола реализованы с использованием netty.
  2. Nutzboot используется для обеспечения внедрения зависимостей и настройки свойств.
  3. Redis используется для реализации кэширования сообщений и кластеризации.
  4. Kafka используется для пересылки сообщений (необязательно).

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

MqttWk
├── mqtt-auth — аутентификация при подключении к MQTT-сервису
├── mqtt-broker — ядро реализации функций MQTT-сервера
├── mqtt-common — общие классы и другие модули, использующие сервисные интерфейсы и объекты
├── mqtt-store — информация о сеансах MQTT-сервера (кэширование redis и загрузка kafka)
├── mqtt-client — пример кода клиента MQTT (изменение конфигурации базы данных, запуск)
└── mqtt-zoo — документация или файлы
    ├── mqtt-test-kafka — потребитель kafka получает сообщения
    └── mqtt-test-websocket — пример тестирования веб-сокета

Описание функций

  1. Реализация на основе спецификации MQTT 3.1.1.
  2. Полная реализация уровней качества обслуживания (QoS).
  3. Сохранение сообщений и повторная попытка их отправки.
  4. Механизм сердцебиения.
  5. Аутентификация соединения MQTT (можно выбрать, включать ли).
  6. SSL-соединение (можно выбрать, включать ли).
  7. Фильтрация тем (поддержка одиночных тем подписки, таких как test_topic, /mqtt/test — не может заканчиваться на /, подстановочные знаки подписки #, /mqtt/# — заканчивается на #).
  8. Поддержка Websocket (можно выбрать, включать ли).
  9. Функция кластера (можно выбрать, включать ли).
  10. Функция пересылки сообщений Kafka (можно выбрать, включать ли).
  11. После запуска можно просмотреть статистические данные http://127.0.0.1:8922/open/api/mqttwk/info.

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

  • JDK1.8
  • В корневом каталоге проекта выполните команду mvn install.
  • В mqtt-broker выполните команду mvn clean package nutzboot:shade для упаковки.
  • Запустите и загрузите файл конфигурации yaml в jar java -jar mqtt-broker-xxx.jar -Dnutz.profiles.active=prod. [В это время загружается файл application-prod.yaml].
  • Разверните и загрузите указанный файл конфигурации в папке yaml nohup java -Dnutz.boot.configure.yaml.dir=/data -jar mqtt-broker-xxx.jar >/dev/null 2>&1 &.
  • Откройте клиент mqtt-spy и заполните соответствующую конфигурацию скачать.
  • Порт подключения: 8885, порт websocket: 9995 websocket.
  • Имя пользователя для подключения: demo.
  • Пароль для подключения: 8F3B8DE2FDC8BD3D792BE77EAC412010971765E5BDD6C499ADCEE840CE441BDEF17E30684BD95CA708F55022222CC6161D0D23C2DFCB12F8AC998F59E7213393.
  • Сертификат для подключения находится в mqtt-zoo\keystore\server.cer.

Использование кластера

  • Многомашинный кластер:
mqttwk:
  broker:
    cluster-on: true
    kafka:
      # 是否启用kafka消息转发
      broker-enabled: false
      bootstrap:
        servers: 192.168.1.101:9092,192.168.1.102:9093
redis:
  mode: cluster
  nodes: 192.168.1.103:16379,192.168.1.104:26379,192.168.1.103:36379
  • Одномашинный кластер:
mqttwk:
  broker:
    cluster-on: true
    kafka:
      # 是否启用kafka消息转发
      broker-enabled: false
      bootstrap:
        servers: 192.168.1.101:9092,192.168.1.102:9093
redis:
  mode: normal
  host: 127.0.0.1
  port: 6379

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

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

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

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

Производственная среда

  • Кластер из нескольких машин.
  • Балансировка нагрузки: L4 Switch для богатых людей, Linux HAProxy для бедных.

Примеры скриншотов

Примеры скриншотов

Проекты для справки

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

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

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

Введение

MQTT-брокер с высокой степенью параллелизма и доступности, реализованный на Java + Netty, легко поддерживает 100 тысяч параллельных подключений (один из участников сообщества реализовал поддержку 1,3 миллиона одновременных подключений). Развернуть Свернуть
Java и 2 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

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

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