MQTT брокер для отказоустойчивости

Вопрос или проблема

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

Я пробовал EMQX раньше, но он не совсем подходит для этой цели, и когда один узел выходит из строя, он просто зависает и становится неотзывчивым, пока узел не вернется в сеть. Насколько я видел, HiveMQ и VerneMQ не совсем подходят для этой цели, но поправьте меня, если я ошибаюсь.

Посмотрите документацию по кластеру HiveMQ: https://docs.hivemq.com/hivemq/4.5/user-guide/cluster.html, я буду удивлен, если она не поддерживает ваш случай использования, но, пожалуйста, дайте нам знать. Также не стесняйтесь заглянуть на https://community.hivemq.com – там много знающих людей, включая некоторых из поддержки HiveMQ, которые могут быстро вам помочь. Спасибо!

Ответ или решение

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

Изучение существующих решений

EMQX: Как вы упомянули, EMQX сталкивается с проблемами при отказе одного из узлов, что не подходит для заданной задачи. Это может быть связано с тем, что EMQX в стандартной конфигурации не оптимизирован для отказоустойчивости в условиях низкого объема трафика.

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

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

Альтернативные решения

Если ни одно из вышеупомянутых решений не соответствует вашим требованиям, стоит рассмотреть другие MQTT-брокеры, такие как Mosquitto с расширениями или RabbitMQ с MQTT-плагином. Хотя они могут требовать дополнительных усилий для настройки, их флексибильность и высокая кастомизируемость позволят вам адаптировать систему в соответствии с конкретными нуждами.

Рекомендации по архитектуре

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

Заключение

Определите точные требования к вашей системе (например, время восстановления, максимально допустимое время простоя) и используйте их для оценки брокеров на предмет соответствия. Регулярно тестируйте систему на отказоустойчивость, чтобы убедиться в ее надежности в реальных условиях. Не забудьте учесть потенциал роста системы и вероятные будущие нагрузки — это поможет вам выбрать наиболее подходящую технологию.

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

Оцените материал
Добавить комментарий

Капча загружается...