Thingsboard3.9.1全面架构详细解析说明

        最近在整理thingsboard课程,基于最新thingsboard版本3.9.1/4.0,欢迎大家收藏关注我提问在评论区留言,我争取把最新、最准、最好的课程,呈现在各位亦师亦友的csdn广大读者面前。

目录

1.架构说明

1.1基础架构

1.2单体架构

1.3微服务架构

1.4边缘


1.架构说明

1.1基础架构

说明:

(1) Transport与Core之间的通信队列:

Kafka (默认推荐的生产环境方案)

In-Memory Queue (主要用于开发环境或小规模部署)

(在thingsboard.yml文件中可以配置)

生产者TbQueueProducer,如下:

消费者TbQueueConsumer,如下:

(2) Gateways网关

此处网关默认是指TB团队研发的物联网关软件产品(使用python语言开发),实际项目中可以替换为自己网关(软件或软硬件一体),市面上也有很多网关能够兼容TB平台,这类网关硬件基于STM32/ESP32/ARM+Linux都有。

TB分层架构可以理解为以下几个部分:

(1) 设备接入层

负责与IoT设备通信,支持多种协议(如 MQTT、CoAP、HTTP 等)。

使用Netty实现高效的网络通信,处理大量并发连接。

(2) 核心服务层

包括设备管理、规则引擎、数据存储等功能。

使用Actor构建分布式消息传递系统,确保高并发和容错能力。

(3) 数据存储层

支持多种数据库(如 Cassandra、PostgreSQL、TimescaleDB 等),用于存储设备数据和元数据。

(4) Web-ui层

基于Angular框架开发,提供用户界面,用于设备管理、仪表板展示等。

thingsboard系统中,设备数据从接入到处理的一般流程:

(1) 设备连接与数据传输

设备通过MQTT、CoAP或HTTP协议发送数据到TB平台。

基于Netty的Transport接收设备的数据流,并将其解析为内部消息格式。

(2) 消息路由

解析后的消息被传递到Actor系统中。

Actor负责将消息分发到不同的服务模块(如规则引擎、存储服务等)。

(3) 规则引擎处理

规则引擎基于预定义的规则对数据进行处理(如过滤、转换、触发告警等)。

处理结果可能被转发到其他服务或外部系统。

(4) 数据存储

处理后的数据被存储到数据库中,供后续查询和分析使用。

(5) 用户交互

用户通过Web-ui查看设备状态、历史数据、仪表板等。

1.2单体架构

在单体架构中,所有TB组件都在单个JVM中启动,并共享一个操作系统的资源。单体架构的优势是最小化运行,所需内存极少,比如达到256或512 MB就可以启动和运行;单体架构的缺点是,如果使用消息(如MQTT传输)重载一个组件,它也可能影响其他组件。例如,如果操作系统对TB进程的限制是4096个文件描述符,那么系统不能同时从设备和websocket用户会话中打开超过4096个MQTT会话。

文件描述符是操作系统中用于标识和访问文件或其他 I/O 资源(如管道、套接字、设备等)的抽象句柄。它是一个非负整数,由操作系统内核分配和管理。每个进程都有自己的文件描述符表,用于跟踪其打开的文件和 I/O 资源。

文件描述符是进程与操作系统之间交互的桥梁。通过文件描述符,进程可以读取、写入、关闭文件或网络连接等资源。

在大多数 Linux 系统中,每个进程默认的文件描述符限制是1024,可以修改内核参数提升文件描述符默认数量。

Core核心服务的功能:

1)所有REST API;

2)与前端交互(WebSocket);

3)设备/资产/告警等实体管理;

4)租户/权限;

1.3微服务架构

        (1)微服务架构概述

微服务主要为了解决高并发场景下的性能瓶颈和扩展性问题,其核心功能模块(如传输层、规则引擎、Web-ui 等)拆分为独立的服务,通过消息队列(如Kafka)进行通信,实现高可用性和负载均衡。

        (2)传输层微服务

传输层微服务负责处理设备与平台之间的通信,支持MQTT、HTTP和CoAP协议。每个协议由独立的服务器组件实现,并通过消息队列(如Kafka)与核心服务通信。传输层使用tb.transport.api.requests和 tb.transport.api.responses主题进行设备凭证验证和消息传递。

        (3)核心服务

核心服务是TB的中枢,负责处理REST API调用、WebSocket订阅、设备会话管理等功能。基于Actor模型,核心服务实现了租户、设备、规则链等实体的高效管理,并通过一致性哈希算法在集群节点间分配负载。

        (4)规则引擎微服务

规则引擎是TB核心功能模块,负责处理设备上报的数据并触发预定义的动作。规则引擎使用Actor模型实现规则链和规则节点,支持多租户隔离和共享模式。规则引擎从消息队列(比如Kafka)订阅消息,并在处理完成后进行确认。

        (5)Web-ui微服务

使用Express.js框架承载静态内容,并通过REST API和WebSocket这两个组件,与核心服务交互。Web-ui完全无状态,支持高并发访问和动态数据展示。

        (6)消息队列与通信机制

消息队列(比如Kafka)是TB微服务架构所需要的核心通信组件,用于实现消息的持久化和负载均衡。每个微服务通过消息主题(如 tb.rule-engine 和 tb.core)进行通信,确保消息的可靠传递和处理。

        (7)数据库与持久化

TB支持多种数据库选项,包括PostgreSQL、Cassandra和TimescaleDB。实体数据通常存储在PostgreSQL中,而时间序列数据可选择Cassandra或TimescaleDB,以此实现高效存储和查询。

1.4边缘

[标记]Mark-20250210-1

Edge与ThingsBoard连接,可以组成大型物联网络,加强边缘和现场处理能力,减轻中心物联网平台的存储和并发压力。

Edge与ThingsBoard之间使用gRPC协议,端口7070,在thingsboard.yml文件中可配置Edge实例的相关参数。

边缘的主要功能列表,如下:

It supports the following ThingsBoard features:

(1)Attributes - Assign and manage custom attributes to your entities.

(2)Telemetry - API for collecting time series data from your devices.

(3)Entities and relations - Model physical world objects (e.g., devices and assets) and the relationships between them.

(4)Data visualization - Develop custom dashboards and widgets.

(5)Rule engine - Manage data processing & actions on incoming telemetry and events.

(6)RPC - Send remote procedure calls (RPC) from both edge and cloud sides to devices, and vice versa.

(7)Audit log - Track user activity.

(8)API Limits - Control and limit the number of API requests from a single host.

在Edge和ThingsBoard之间连接正常下:

        Edge负责自己的区域自治管理功能,ThingsBoard负责中心平台管理功能,

在Edge和ThingsBoard之间连接断开下:

        (1)Edge负责自己的区域自治管理功能,ThingsBoard负责中心平台管理功能,

Edge和ThingsBoard都还能正常工作(规则链/数据采集/管理功能都正常)。

(2)数据(遥测、属性、事件等)被缓存在Edge本地。

(3)设备与Edge之间的RPC命令正常工作,从ThingsBoard到设备的命令无法通信。

        当Edge和ThingsBoard之间连接恢复正常时,如下:

使用FIFO原则保持同步时序一致情况下,Edge同步推送数据到ThingsBoard中心平台,包括遥测、属性、设备状态、仪表板、规则链,事件、告警、RPC命令等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值