目前,我正在物联网平台上做一些研发工作。我计划在集群模式下部署它。
部署时,两个Thingsboard服务器如何相互通信?
我想到了这个问题,因为一个特定的设备可以向一个Thingsboard服务器(A)发送消息,但实际上,该消息可能需要传输到另一个服务器(B),因为B服务器中的一个节点正在处理该特定设备的消息(我知道Thingsboard节点使用设备哈希来处理消息)。
卡夫卡是如何在集群中相应地转发该信息的?
我看了官方文档,做了一些谷歌搜索。但却找不到确切的答案。
发布于 2021-12-20 08:17:51
Thingsboard使用“动物园管理员”作为服务发现。
每个Thingsboard微服务都知道集群中其他服务的运行情况。所有通信都通过消息队列执行(Kafka是一个不错的选择)。每个主题都有几个分区。每个分区将被分配给相应的节点。
设备的消息将由发端id进行散列,并始终被推送到常量分区号。节点之间没有直接通信。
在某些节点崩溃或简单地向上/向下缩放的情况下,将在每个节点上触发重新分区事件。现有分区将根据行节点计数重新分配。设备服务将遵循相同的逻辑。
这都是魔法。简单有效。希望它对板式集群体系结构有帮助。
https://stackoverflow.com/questions/57324602
复制相似问题