欢迎Star该github,长期更新IoT服务器设计的相关文章(后续该文章的优化修改只会该git)
本文解释为什么Thingsboard微服务分布式下-设备控制的数据流-架构与可用性分析(有架构图) 的图中,topic有"tb_rule_engine.main.3","tb_core.notification.tb-core-1"这两种的格式
因为TB(Thingsboard)对很多消息队列(queue)进行了支持,所以对queue做了抽象,抽象层的topic就是"tb_rule_engine.main.3"
有的queue没有分区(partition)的概念,对于这些queue,topic就是"tb_rule_engine.main.3"(相当于一个一级菜单),该topic只会被一个node消费
Kafka有partition,最终子类实现时,topic是tb_rule_engine_main,而partition就是3(相当于一个二级菜单),该partition只会被一个node消费
‘tb_rule_engine.main’ 是一般消息
‘tb_rule_engine.hp’ 是 high priority 高优先级消息.(如下图源码,highPriorityMsgs里有消息,就不会处理normalPriorityMsgs的消息,从而实现消息处理的优先级)
‘tb_rule_engine.sq’ 是sequence有顺序的消息(会牺牲性能)
notification的消息只会发给制定的一个node(.tb-core-1),相当于消费组里只有一个消费者