首页 > 解决方案 > 集群中的 ThingsBoard 服务器如何相互通信?

问题描述

目前,我正在对 Thingsboard IOT 平台进行一些研发。我打算以集群模式部署它。

部署时,两个 Thingsboard 服务器如何相互通信?

我想到了这个问题,因为特定设备可以向一个 Thingsboard 服务器 (A) 发送消息,但实际上,由于 B 服务器中的一个节点正在处理该特定设备的消息,因此可能需要将消息传输到另一台服务器 (B)消息(据我所知,Thingsboard 节点使用设备哈希来处理消息)。

Kafka 在集群中如何相应地转发该消息?

我阅读了官方文档并进行了一些谷歌搜索。但是找不到确切的答案。

标签: iotthingsboardthingsboard-gateway

解决方案


Thingsboard 使用 Zookeeper 作为服务发现。

每个 Thingsboard 微服务都知道集群中某处运行的其他服务。所有通信都通过消息队列执行(Kafka 是一个不错的选择)。每个主题都有几个分区。每个分区将分配给相应的节点。

设备消息将由发起者 id 散列,并始终推送到恒定分区号。节点之间没有直接通信。

在某些节点崩溃或只是放大/缩小的情况下,Zookeeper 将在每个节点上触发重新分区事件。现有分区将根据线路节点数重新分配。设备服务将遵循相同的逻辑。

那都是魔法。简单有效。希望它对Thingsboard 集群架构有所帮助。


推荐阅读