Как серверы ThingsBoard в кластере взаимодействуют друг с другом?
В настоящее время я занимаюсь исследованиями и разработками на платформе Thingsboard IOT. Я планирую развернуть его в режиме кластера.
Как два сервера Thingsboard взаимодействуют друг с другом при его развертывании?
Я запомнил эту проблему, потому что конкретное устройство может отправить сообщение на один сервер Thingsboard (A), но на самом деле сообщение может потребоваться перенести на другой сервер (B), так как узел на сервере B обрабатывает это конкретное устройство. сообщения (насколько я знаю, узлы Thingsboard используют хеш устройства для обработки сообщений).
Как Кафка поток пересылать это сообщение соответственно, когда в кластере?
Я прочитал официальную документацию и немного погуглил. Но не смог найти точных ответов.
1 ответ
Thingsboard использует Zookeeper в качестве службы обнаружения.
Каждый микросервис Thingsboard знает, какие другие сервисы работают где-то в кластере. Все коммуникации осуществляются через очереди сообщений (Kafka — хороший выбор). Каждая тема имеет несколько разделов. Каждый раздел будет назначен соответствующему узлу.
Сообщение для устройства будет хэшироваться по идентификатору отправителя и всегда помещаться в постоянный номер раздела. Прямой связи между узлами нет.
В случае сбоя некоторых узлов или просто увеличения/уменьшения масштаба Zookeeper запускает событие перераспределения на каждом узле. И существующие разделы будут переназначены в соответствии с количеством узлов линии. Служба устройства будет следовать той же логике.
Это все магия. Просто и эффективно. Надеюсь, это поможет с архитектурой кластера Thingsboard .