假如你是农场主,经营着一座现代化种植基地——几十个大棚里种着番茄、草莓和叶菜,每个棚里都装了温度计、湿度计、土壤水分传感器和光照仪。过去你每天要挨个棚转悠,拿本子记数据,回家再对着 Excel 发呆。现在你决定上一套“智慧农场管理系统”:传感器自动把数据报上来,系统里的“管家”替你看数据、做判断,天气热了自动开风机,土壤干了自动开水阀;你在客厅装一块大屏,农场每个角落的实时状况一目了然;真出了大事,系统还会摇铃喊你起床处理。 这套系统的学名,就叫“物联网平台”。而 ThingsBoard,就是其中最受欢迎的开源选择之一。它就像一个标准化的“农场中央控制室”:前端管设备接入,中间管数据加工与智能决策,后端管展示与告警。本篇文章会带你从零认识 ThingsBoard 的核心架构——设备接入层、规则引擎、可视化仪表盘、告警管理,并用一个完整的模拟实战,把从设备上报到前端展示的全链路走通。学完之后,你会拥有一套真实可用的开源 IoT 底座,无论是智能家居、工业监测还是智慧农业,都能快速落地起步。
学会 ThingsBoard,等于掌握了一套完整的开源 IoT 基础设施搭建能力,能独立设计并部署端到端的物联网应用,是物联网方向开发者的硬通货技能。
目录
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
平台概览:农场的中央控制室
每个农场都该有自己的中央控制室。你接手这座农场时,湿度计是甲牌子、温度计是乙牌子、土壤探针是丙牌子,各有各的说明书,各说各的语言。你真正需要的,不是再买一堆互不相认的单机软件,而是一面能把这些设备全部挂上去的墙——一个统一接收、统一处理、统一展示的控制中枢。ThingsBoard 就是这个控制室的毛坯房:开源、免费、装配齐全,还留好了各种设备接口。
ThingsBoard 是一套完整的物联网中间件平台,把“设备接入、数据存储、规则处理、可视化展示、告警通知”五件大事集于一身。无论设备走 MQTT 还是 HTTP 协议,控制室都照单全收;收完数据交给后台加工,加工完送到大屏,一旦越界马上发出告警。平台整体分为三层:设备接入层负责协议适配,相当于前台接待;平台核心层承担规则引擎与消息队列,相当于值班主任;应用展示层提供 REST API 与仪表盘,相当于面向老板的汇报窗口。技术栈基于 Java 生态,使用 Netty 做高并发网络通信、PostgreSQL 或 Cassandra 做存储、WebSocket 做实时推送,社区活跃、插件丰富。
搭建控制室之前,你先要估算这面墙得砌多大——平台上要存多少数据,直接决定你要准备多少磁盘空间,这个账可以提前算清楚:
1. 设备数量 N:农场里接入的传感器总数,设备越多,每天产生的数据越多
2. 上报频率 R:每台设备每分钟上报几次数据,频率越高,数据总量增长越快
3. 存储时长 T:平台需要保存数据的天数,存得越久,占用的空间越大
4. 总体积 S:三者相乘就得到平台需要预留的总存储空间
就好比控制室的档案柜数量,要按“农具件数 × 每天翻动次数 × 保留年数”来提前定制。算清这笔账,你的硬件预算就有了底气。
安装部署:搭好控制室机房
控制室要真正开工,得有间像样的机房:一台服务器、一套基础软件、一个能开机就亮的控制台。但很多初学者一听到“开源平台部署”就怕了,觉得要配置 Java、编译源码、折腾数据库。其实 ThingsBoard 官方早就把这一切打包成了一个个标准集装箱——Docker 容器,你只需要按顺序把集装箱吊到货轮上,一条命令就能拉起整套系统。
最常见的部署方式是 Docker Compose。你只要准备好一台 4 核 8G 内存的机器,安装好 Docker 和 Compose 插件,下载官方编排文件,执行 docker compose up -d,平台主服务、数据库、消息队列就会依次启动。首次启动大约需要几分钟做初始化,完成后访问 8080 端口即可打开登录页,默认系统管理员账号是 sysadmin@thingsboard.org。如果你想调整存储数据库,可以把默认的轻量数据库替换为 PostgreSQL,只需要修改编排文件中的相关配置并指定挂载数据卷。
当然,机房不能盲目配机器。如果你知道大概要接多少设备,内存需求可以用一个粗略公式估算:
1. 设备总数 N:规划期内预计接入的传感器与网关总数
2. 单设备占用 D:每台设备会话、缓存与遥测队列占用的内存,可取经验值
3. 冗余系数 m:为规则引擎与可视化预留的安全倍数,通常取 1.5 到 2
4. 建议内存 M:三者相乘的结果就是控制室机房的“建议内存大小”
这就像建仓库存化肥:先数大棚数量,再算每间棚要摆几袋,最后留出搬运通道的余量。控制室机房搭好了,下一步就是给田间地头的传感器配发“对讲机”。
设备接入:给传感器装上电话线
传感器像分布在田间的值守员,要跟控制室沟通,手里得有通讯工具。你不可能给每个值守员拉一根专线网线,那太贵也太笨重。物联网给出的标准答案是“对讲机”——MQTT 协议。它无线、轻量、省电,一条消息几字节就能讲清楚“我现在 38 度”,而且还支持多人同频道收听,是 IoT 设备接入的事实标准。
在 ThingsBoard 里让设备“开口说话”只需四步:先创建设备并拿到一串访问令牌,再让设备用令牌连上平台的 MQTT broker,接着按 v1/devices/me/telemetry 主题上报数据,最后去设备列表看“在线”状态是否点亮。除了 MQTT,平台也支持 HTTP 上报和 CoAP 协议,某些老设备甚至可以通过网关转接接入,就好比不同型号的对讲机都能调到同一个应急频道。数据帧采用统一的“时间戳 + 键值对”格式,平台才能把不同设备的读数放进同一张时间序列表里。
设备多起来以后,你关心的问题自然会变成:这么多对讲机同时呼入,信道会被占满吗?数据流量可以提前估算:
1. 设备数量 n:同时在线向平台上报数据的设备总数
2. 单帧长度 L:每条遥测消息的平均字节数,取决于字段多少与消息格式
3. 上报频率 f:每台设备每秒上报的次数,反映数据密度
4. 总流量 D_t:三者乘积就是每秒需要平台吞吐的网络流量
这个公式让你在采购宽带和规划网关时心里有数:100 台设备每 30 秒报一次 200 字节的消息,每秒流量约 700 字节,普通带宽绰绰有余。电话线通了,数据开始源源不断涌进控制室,接下来主角登场——管家。
规则引擎:管家大脑的思考回路
数据进了控制室,谁来决策?当然不能指望农场主每秒钟盯着数字发呆。这时“管家”登场了——它每天都拿着值班手册和数据打交道,听见温度读数偏高的消息,立刻决定开风机还是拉警报。这个管家在 ThingsBoard 里就叫规则引擎,它的大脑是一张张可视化的规则链(Rule Chain)。
规则链是一张由节点和连线组成的处理流程图。消息从入口进来,依次经过“过滤器”检查条件,经过“变换器”改写数据,经过“动作节点”执行实际动作,最后被“消息路由”送到指定出口或另一条规则链。过滤器节点承担最常见的条件判断,比如判断温度是否大于阈值、消息是否来自特定设备。整条规则链可以像画流程图一样拖拉拽编排,改完立即生效,不用重启平台。你要是想让管家做事更精细,还可以监听设备上线、离线等系统事件,在对应事件上挂一条处理链。
规则链最经典的用法之一就是“持续超阈值才告警”,避免设备读数抖动导致误报。这个逻辑可以写成:
1. 实时值 V:传感器上报的最新数据值,例如当前大棚温度 38°C
2. 告警阈值 T:规则链中设定的判定门限,超过它才可能触发动作
3. 持续时长 D:超阈值状态连续保持的观测时长,用来过滤瞬时毛刺
4. 时间窗口 Δ:允许超阈值但还不告警的最大时长
5. 逻辑与合并:两个条件同时成立才触发告警,缺一不可
管家虽然严格,但不会一听到咳嗽就当重病,只有持续发烧才决定叫医生。有了会思考的管家,你还需要一面能“看见农场”的大屏。
可视化大屏:客厅里的全景电视墙
有了管家还不够,你得让数据从密密麻麻的数字变成长眼睛就能看懂的画面。控制室隔壁就是客厅,你泡茶时抬头看的电视墙,就是 ThingsBoard 的仪表盘(Dashboard)。如果说规则引擎是管家的脑,那仪表盘就是农场的眼睛——把过去“看不见的农场”变成“看一眼就懂的农场”。
仪表盘可以像拼积木一样由一个个部件(Widget)组装出来。ThingsBoard 组件库自带时序折线图、卡片数值、数据表格、地图、控制按钮等常用部件。搭建过程很简单:创建一个仪表盘,添加部件,给部件绑定“实体 + 遥测键”作为数据源,再选定时间范围,一张实时看板就完成了。大屏上的数据通过 WebSocket 长连接自动推送,设备上报新读数,图表立刻更新,不需要人按 F5 刷新页面。你还可以给不同角色分配不同看板:大棚管理员只看到自己片区,农场主却能看到全景总览。
看板刷新的快慢,直接决定你“看到的是现在还是半分钟前”。刷新频率其实由两个耗时决定:
1. 轮询间隔 Δt_p:前端向平台请求新数据的最短时间间隔,间隔越短越实时
2. 渲染耗时 Δt_r:浏览器重绘画布、更新数值动画所花费的时间
3. 刷新频率 f_r:两者的倒数就是大屏每秒能完成“拉取 + 绘制”的完整次数
就像电视直播的延迟由“信号采集 + 画面渲染”两部分组成,任一段慢,整场直播都会卡。大屏装好了,但农场那么大,不是每个异常你都能盯着看,这时就需要管家拉响报警铃。
告警管理:管家的报警铃
管家平时安静,但真正出事时,他会毫不犹豫地拉响报警铃、拿起电话通知你。这就是 ThingsBoard 的告警管理能力——它把“发现问题、传递问题、跟进问题”串成了一条完整的值班闭环。告警不是凭空出现的,它通常由规则链里的“创建告警”节点触发,携带类型、严重级别、状态三个关键属性。
告警的完整生命周期由状态机管理:刚触发时是“活动”(ACTIVE)状态,表示异常正在发生;值班人员看到并点了“确认”(ACK),告警进入已确认状态,表示“我知道了”;等传感器数值恢复正常、规则链判定条件不再满足,告警被“清除”(CLEARED),事件才算告一段落。通知渠道上,你可以通过 SMTP 邮件发送给管理员,通过 Webhook 把消息推到钉钉、企业微信机器人,也可以通过短信服务商接口直接发到手机上,保证人不在机房也能收到消息。
家不是越大越好,报警铃也得分级:小问题发个短信提醒,大故障才半夜call你。传统“超过阈值就报警”过于粗暴,容易出现满屏红点。更合理的做法是用严重度与持续时长综合定级:
1. 严重度 S:告警的严重程度,分为低、中、高、严重等几档,由规则链按业务设定
2. 持续时间 D:异常状态已经持续的时间,持续越久往往越紧急
3. 告警级别 L:综合严重度与持续时长算出的最终告警等级,决定通知方式与处理优先级
报警铃装好了,农场从传感器到控制室再到客厅大屏,每个零件都已就位。最后我们完整跑一遍全流程,看看这套系统一整天是怎么运转的。
端到端实战:模拟一天农场运转
零件都齐了,但只有把从传感器到大屏的链路完整跑通,你才能真正放心地把农场交给它。这一节就是“试运行验收日”:从早到晚,我们模拟大棚温度逐渐升高、触发告警、大屏闪烁、直到 Webhook 推送的完整过程。
先设计场景:假设 1 号大棚的番茄对高温敏感,我们设定“温度超过 35°C 且持续 5 分钟”就触发高温告警,同时向看板推送一条红色警告。然后我们在 ThingsBoard 里创建租户、创建设备、拿到访问令牌,再运行一个 Python 模拟器脚本,让脚本每隔几秒上报一条温湿度数据。接着打开规则链编辑器,确认消息经过过滤器、创建告警节点的流向正确。最后打开仪表盘,盯着实时曲线从绿色区间爬向红色区间的过程——当曲线越线,告警列表立即弹出新记录,你的手机也收到了 Webhook 推送。整个链路全部验证通过,才算真正交付。
端到端验证时,我们常关注“从传感器读数到屏幕上出现动画,到底要等多久”。总时延由三段组成:
1. 采集时延 T_ingest:设备发送数据到平台完成接收与入库所需的时间
2. 处理时延 T_process:规则链执行过滤器、变换器、告警判断等节点消耗的时间
3. 展示时延 T_visualize:仪表盘通过 WebSocket 收到新数据并完成渲染的时间
4. 总时延 T_total:三段相加,就是农场从“身体感知”到“你看见”的完整反应时间
一整天试运行下来你会发现,从传感器到展示的全链路就像农场的水渠一样:设备端是水源,规则引擎是闸口,可视化大屏是蓄水池,告警是溢流报警器。水渠每一段都通畅,这座智慧农场才算真正建成。
AI 应用场景
智慧农业大棚精准联动
阶段:数据采集与规则决策
解决的问题:传统大棚靠人工巡视记录温湿度,再手动开风机,数据滞后且费人力。ThingsBoard 统一接入棚内温湿度、土壤、光照传感器,规则引擎按设定条件自动触发喷灌与风机设备,形成“感知—决策—执行”闭环。
具体案例:某现代农业园部署 30 个大棚,每棚装 3 类传感器,通过 MQTT 每 30 秒上报一次。规则链判断“温度高于 35°C 且持续 5 分钟”时自动下发开风机指令,同时大屏按 A/B/C 分区展示状态,温度回落后自动关风机。整体节省巡视人力约 60%。
工业设备预测性维护告警
阶段:异常检测与告警通知
解决的问题:旋转机械的振动异常若发现不及时会导致停机损失,靠人工 24 小时盯守不现实。ThingsBoard 持续接收振动与温度数据,通过规则链做阈值和持续时长双重判定,告警经 Webhook 推到企业微信,值班人员扫码即可确认处理。
具体案例:某注塑车间为 30 台注塑机加装振动传感器,平台判断“振动加速度超过 5 mm/s² 且持续 10 秒”即产生告警并通知设备科,平均故障响应时间从 2 小时缩短到 20 分钟。
智慧楼宇能耗可视化
阶段:数据可视化与辅助决策
解决的问题:楼宇电表、水表数据分散在 Excel 与纸质报表,无法实时预警异常能耗。ThingsBoard 仪表盘将各楼层能耗聚合为卡片、时序图和排行榜,让物业一眼看出异常波峰。
具体案例:某写字楼接入 40 个智能电表,仪表盘展示总用电量、分区对比与夜间异常波峰。物业发现 B 栋空调主机夜间功率异常,顺藤摸瓜定位到故障冷却塔,改造后整栋楼电费节约约 15%。
Python 演示
import timeimport randomfrom datetime import datetime class SensorSimulator: """模拟一个 ThingsBoard 温湿度传感器设备""" def __init__(self, device_id, base_temp=30.0): self.device_id = device_id self.base_temp = base_temp self.gc_count = 0 def read_temp(self): """读取当前温度模拟值""" return self.base_temp + random.uniform(-3.0, 5.0) def build_payload(self, temp, humidity): """构造 ThingsBoard 遥测标准数据帧:ts + values""" return { "ts": int(time.time() * 1000), "values": { "temperature": round(temp, 2), "humidity": round(humidity, 1), }, } class RuleChain: """简化版 ThingsBoard 规则链:高温持续告警判定""" def __init__(self, temp_threshold=35.0, duration_win=3): self.temp_threshold = temp_threshold self.duration_win = duration_win self.alarm_list = [] self._over_win_map = {} def process(self, device_id, values): """模拟规则链过滤器节点与创建告警节点""" temp = values.get("temperature", 0) if temp > self.temp_threshold: self._over_win_map[device_id] = self._over_win_map.get(device_id, 0) + 1 else: self._over_win_map[device_id] = 0 if self._over_win_map.get(device_id, 0) >= self.duration_win: alarm = { "device": device_id, "type": "HIGH_TEMP", "severity": "CRITICAL", "value": temp, "time": datetime.now().isoformat(), } self.alarm_list.append(alarm) return alarm return None def main(): sensor = SensorSimulator("greenhouse-01", base_temp=30.0) chain = RuleChain(temp_threshold=35.0, duration_win=3) print("=== ThingsBoard 设备模拟 + 规则链告警 ===") for i in range(20): temp = sensor.read_temp() humidity = random.uniform(40.0, 70.0) payload = sensor.build_payload(temp, humidity) alarm = chain.process(sensor.device_id, payload["values"]) status = "ALARM!" if alarm else "normal" print(f"[{i + 1}] {sensor.device_id} {temp:.2f}C {status}") time.sleep(0.3) print(f"\n共触发 {len(chain.alarm_list)} 次高温告警") for alarm in chain.alarm_list: print(f" - {alarm['type']} severity={alarm['severity']} at {alarm['time']}") if __name__ == "__main__": main()
def build_payload(self, temp, humidity)组装 ThingsBoard 遥测标准帧,ts字段存毫秒时间戳,values存业务键值对"ts": int(time.time() * 1000)把当前时间转换成 Unix 毫秒时间戳,这是平台排序与聚合的时间基准chain.process(sensor.device_id, payload["values"])规则链入口,只取values部分参与业务判断,不关心原始帧结构if temp > self.temp_threshold:过滤器节点的最核心操作:把实时值与阈值比较,决定消息流向self._over_win_map.get(device_id, 0) + 1用连续计数实现“持续时长”窗口,避免单次尖峰误触发alarm_list.append(alarm)命中条件后创建告警对象并记录到告警表,对应平台里的“创建告警”节点
常见误区
误区“我以为 ThingsBoard 就是个带网页的数据库,能把设备数据存进去、查出来就行了,规则引擎和告警根本没用过。”
正解ThingsBoard 是“控制室”而不只是“仓库”:设备接入层负责协议适配与鉴权,规则引擎承担实时决策,可视化与告警组成完整业务闭环。如果只当数据库用,等于把中央控制室改成了储物间——不仅浪费了平台最值钱的决策能力,连设备接入层的协议转换与管理功能你也得自己重新造轮子。
为何常见:很多入门教程从仪表盘展示数据讲起,让人第一印象误以为核心能力是存储查询。
误区“是不是所有设备都必须支持 MQTT 才能接进 ThingsBoard?我只会 HTTP,是不是就没法用了?”
正解MQTT 是官方推荐的物联网轻量协议,但绝非唯一选择。平台同样支持 HTTP、CoAP,还允许通过网关把 LoRa、NB-IoT 等私有协议设备统一代理接入。就像控制室前台能接待讲不同方言的来客,只要配上合适的“翻译”(网关或插件),设备就能顺利报到。
为何常见:MQTT 在物联网领域名气最大、教程最多,导致很多人忽略了平台的多协议适配能力。
误区“规则引擎不就是写个 if 温度大于 35 就告警的条件判断吗?这点逻辑自己写代码几行就搞定了。”
正解规则链是图式可视化编排,可以串联过滤器、变换器、动作节点、消息路由,支持跨设备聚合、RPC 下发、多级规则链嵌套等复杂场景。它像管家手握的“决策手册”,而不只是一张便利贴。例如“当 A 棚温度高且 B 棚风机空闲”这类跨设备联动,靠几行脚本维护起来非常痛苦,规则链却能一目了然。
为何常见:教学示例为了降低门槛,往往只演示最小 if-else,让人误以为全部能力仅此而已。
误区“ThingsBoard 的告警是不是只能发邮件?我是不是还得去搭一套邮件服务器?”
正解平台内置 SMTP 邮件、Webhook 回调、REST API 等通知能力,社区还常通过 Webhook 接入钉钉群机器人、企业微信、短信服务商。报警铃的声响方式多种多样,你可以按紧急程度选择不同渠道:普通提醒发邮件,严重故障推短信。通知的本质是把告警事件可靠地送达责任人,渠道本身不是限制。
为何常见:默认配置里邮件最容易配通,现有教程也总拿邮件举例,导致“唯一解”的错觉。
误区“Java 系平台肯定很重,要自己编译源码、配数据库、调一堆参数,没个一两天起不来。”
正解官方提供 Docker Compose 一键编排方案,装好 Docker 后拉取镜像、执行一条启动命令,通常十几分钟就能把平台和依赖数据库全部跑起来。硬件够用、端口不冲突的情况下,本地笔记本就能完成体验级部署。它不是需要砌墙的机房,而是像拼装控制室的乐高套件——箱子里什么都有,按说明书搭就行。
为何常见:早期源码编译安装教程传播很广,加上 Java 技术栈给人“重”的刻板印象,让新人望而却步。
面试题
Q1. ThingsBoard 是一款什么样的软件?
- A.开源物联网设备管理平台← 正确答案
- B.开源关系型数据库系统
- C.开源容器编排调度引擎
- D.开源视频会议协作软件
答案:A。ThingsBoard 的定位是开源物联网设备管理与数据可视化平台,核心能力是设备接入、遥测存储、规则判断与仪表盘展示。数据库、容器编排、会议软件都不具备“设备接入 + 规则引擎 + 可视化”的组合能力,好比拿水管当电话线,方向就错了。
Q2. 设备接入时最常用的轻量级通信协议是?
- A.消息队列遥测 MQTT 协议← 正确答案
- B.简单邮件传输 SMTP 协议
- C.文件传输 FTP 通信协议
- D.动态主机配置 DHCP 协议
答案:A。MQTT 基于发布/订阅模型,协议开销小、功耗低,是物联网设备接入的事实标准。SMTP 用于发送邮件,FTP 用于传大文件,DHCP 用于自动分配 IP 地址,它们在设备遥测上报场景中都不适用,就像不能用寄信的方式喊值守员报数。
Q3. 规则链中用于条件判断的节点是?
- A.判断器节点
- B.过滤器节点← 正确答案
- C.日志器节点
- D.存储器节点
答案:B。过滤器节点(Filter)是规则链中的“闸门”,负责判断消息是否满足条件并决定是否继续向后流转。日志器负责记录,存储器负责持久化,而“判断器”并不是 ThingsBoard 的标准节点名。它在规则链中的角色,就像值班主任在文件上签字放行。
Q4. ThingsBoard 仪表盘原生支持哪些可视化部件?
- A.时序折线图部件← 正确答案
- B.三维建模渲染部件
- C.实时仪表盘点部件← 正确答案
- D.视频剪辑处理部件
答案:AC。ThingsBoard 部件库内置时序图、卡片、表格、地图、控制按钮等物联网常用部件,分别承担趋势展示、数值摘要、状态列表等职责。三维建模和视频剪辑不属于物联网可视化范畴,平台也不提供这类部件,就像控制室大屏不会内置游戏机。
Q5. 设备遥测上报数据中,时间戳字段 ts 的常用单位是?
- A.毫秒级时间戳← 正确答案
- B.秒级时间戳
- C.分钟级时间戳
- D.小时级时间戳
答案:A。ThingsBoard 遥测帧中 ts 字段使用 Unix 毫秒时间戳,如 1685000000000,以保证毫秒级排序精度和时间窗聚合的准确性。如果用秒或更粗粒度,平台在做环比、窗口时长这类计算时会丢失精度,就像秒表被换成小时钟,连“几分钟前”都对不齐。
Q6. 以下哪些属于 ThingsBoard 可用的告警通知渠道?
- A.SMTP 邮件通知← 正确答案
- B.Webhook 回调通知← 正确答案
- C.短信服务商通知← 正确答案
- D.超声波探测通知
答案:ABC。ThingsBoard 通过规则链中的动作节点支持邮件、Webhook、调用外部 REST API 等通知方式,Webhook 常被用来对接钉钉、企业微信等办公平台。超声波探测属于物理传感手段,不是平台的通知能力——它只能“感知”却没法“喊人”。
Q7. ThingsBoard 官方推荐的快速部署方式是?
- A.Docker 容器编排部署← 正确答案
- B.手工源码编译部署
- C.二进制拷贝部署
- D.镜像整盘拷贝部署
答案:A。官方提供 Docker Compose 编排文件,一条命令即可拉起平台与依赖数据库,环境隔离、升级方便。源码编译步骤多、耗时长,二进制拷贝和整盘拷贝又缺乏可移植性与可维护性,如同拆墙搬家而不是用标准集装箱运输。
Q8. 规则链中“消息路由”节点的主要职责是?
- A.将消息转到不同规则链← 正确答案
- B.将消息直接存入数据库
- C.将消息格式转换成编码
- D.将消息压缩减小体积
答案:A。消息路由节点承担“分诊台”的作用,根据规则把消息分发到不同的规则链或消息队列继续处理。存储、格式转换、压缩是其他类型节点的职责。路由节点本身不做业务判断,只负责把人准确带往对应诊室。
Q9. 关于 ThingsBoard 平台分层架构,正确的说法有哪些?
- A.设备接入层负责协议适配← 正确答案
- B.物理网卡层负责数据转发
- C.应用开放层提供 API 接口← 正确答案
- D.内存管理层负责数据缓存
答案:AC。ThingsBoard 的架构分层包括设备接入层(完成 MQTT/HTTP 等协议适配)、平台核心层(规则引擎与存储)、应用开放层(REST API 与仪表盘)。物理网卡和内存管理属于操作系统底层概念,不属于平台自身的分层结构,就像控制室不需要把电源插座画进组织架构图。
Q10. 端到端数据链路总时延的正确表达式是?
- A.三段时间直接相加估算总时延← 正确答案
- B.三段时间相减得到总时延
- C.三段时间相乘得到总时延
- D.三段时间相除得到总时延
答案:A。端到端总时延等于采集时延加规则处理时延加可视化渲染时延,三段串联累加才符合物理意义。相减、相乘、相除都讲不通,就像农场水渠的流经时间等于各段渠道耗时逐个相加,而不是哪段减去哪段就能算出来的。