开源物联 平台ThingsBoard(CE版)可用性探讨

在众多的开源物联 平台项目中,Thingsboard在体系架构先进性、功能完整性、文档完备性方面,应是首屈一指。但其自身存在的一些短板,直接影响到市场应用的普及。我们艾瑞博达团队,跟进ThingsBoard项目已达四年之久,对其代码和特性进行了深入研究,而且在项目应用中,对其进行了必要的改进和扩充。在此,我们将用一组系列文章,分享我们的实践经验。希望与感兴趣的业界同仁展开交流与合作。

1、优势特点

1.1、微服务架构

从V2.2.0开始支持微服务,逐渐将传输协议(MQTT、HTTP、CoAP)代理服务、规则引擎服务从核心服务中分离出来,保证在高并发接入情况下的分布式部署和性能调优。

1.2、Actor模型

Actor模型具有高并发、高容错的特点。

自从V2.5.2开始,为了提高执行效率,ThingsBoard摈弃了Akka的使用,采用Java自主开发了更高性能的Actor系统。其Actor体系架构如下图所示:

实现的Actor对象包括:

  • App Actor – 负责管理租户Actors,其实例常驻内存;
  • Tenant Actor – 负责管理租户设备和规则链Actors,其实例常驻内存;
  • Device Actor – 维护设备的状态: 活动的Sessions, 订阅, 侦听RPC 命令等。;
  • Rule Chain Actor – 处理接收的消息并分发给规则节点Actors,其实例常驻内存;
  • Rule Node Actor – 处理接收的消息,并将结果反馈给规则链, 其实例常驻内存。
  • 1.3、规则引擎

    Thingsboard仿效Node Red,自主开发的可视化规则引擎为消息处理提供了强大的功能支持。迄今,一些商业版的物联 平台均未见有相似的工具。

    通过规则链的交互式配置,可以定义设备事件或数据的过滤、告警条件设置、跨系统联动控制、数据路由设定等业务逻辑,只需要编写简单Javascript脚本。

    缺省提供了常用的功能节点。遇有特殊需求时,可动态扩充。

    规则引擎主要应用场景包括:

  • 在存储之前,将设备上行数据进行校验或修正;
  • 将多个设备的数据复制到资产,以便进行聚合、关联计算;
  • 基于预置条件,生成、刷新或清除告警信息;
  • 基于预置条件,触发执行动作;
  • 基于预置条件,触发对外部系统的REST API调用;
  • 支持按预定制模板向指定用户发送邮件或短信息;
  • 将数据转发到消息队列(MQ)中,第三方应用可以通过消息队列获取到设备上行数据;
  • 将数据转发到流计算中,提供设备数据采集 + 流式计算的联合方案;
  • 将数据转发到时序数据库,提供设备数据采集 + 结构化存储的联合方案。
  • 1.4、数据可视化

    Thingsboard提供了丰富的数据可视化Widget,包括:地图、仪表盘、卡片、图表等。

    通过交互式挂接数据源,便可借助WebSocket实现数据展现的实时刷新。相比Grafana,具有更好的实时性。

    1.5、多协议支持

    ThingsBoard Server起初就提供了MQTT、HTTP、CoAP三种传输协议的服务端代理。近期发布的V3.30版本,又增加了LwM2M及SNMP协议的支持。

    ThingsBoard Gateway是迄今为止,同类开源项目中接入协议支持最为丰富的 关。

    ThingsBoard Gateway通过MQTT协议接入ThingsBoard Server,通过各种主流协议连接器接入现场设备、系统或数据。目前支持的协议包括:MQTT、HTTP(S)、OPC-UA、ModBus、BACnet、CAN、SNMP、BLE、ODBC等。针对特殊协议,也支持定制连接器。iRay.iot 关支持RPC请求,以实现反向控制。

    ThingsBoard Gateway提供基于内存或本地文件两种方式的数据缓存机制,用于连接中断时,暂存数据,当连接恢复时,自动将数据上传到服务器。

    ThingsBoard Server提供 关的远程配置管理服务,允许用户将配置脚本远程下发给指定 关。

    2、不足之处

    2.1、系统管理问题

    ThingsBoard(CE)版的系统管理是针对远程设备管理平台的定位而设计的。每个租户对应一个设备厂商,一个厂商可以有多个客户,每个客户可以有多个用户。具体的设备管理是赋权给客户和用户的。这种管理机制不适合企业内部应用场景。而且缺乏灵活的授权控制功能,许多权限都写死在代码之中。

    2.2、时序数据存储组织问题

    ThingsBoard(CE)版迄今没有导入专业的时序数据库应用,用户可选择的只有PostgreSQL和Cassandra。虽然针对PostgreSQL引入了TimeScale插件,但由于其不是按照宽表的方式组织数据记录,TimeScale的优势根本发挥不出来。总之,这两种数据库不具备高效的数据吞吐能力。

    而且,Thingsboard(CE)版在数据入库时,是将设备的多个遥测值拆分成不同的记录。不断增加了数据冗余量,而且非常不便于使用。

    2.3、Asset的歧义性问题

    ThingsBoard(CE)版引入了Asset(资产)的概念,这造成了严重的概念混淆,因为设备也是资产。它的Asset应理解为相关联的设备集合,而且这个集合也具有单个设备的特性。

    2.4、告警条件配置问题

    ThingsBoard(CE)版提供了交互式复杂告警条件配置功能,由于界面逻辑设计的问题,对于多条件配置容易出现混乱。

    2.5、前端框架选用问题

    ThingsBoard(CE)版采用Angular.js作为前端开发框架,对于普遍使用Vue.js的国内程序员,造成了严重的水土不服。直接影响到了其市场接受度。

    2.5、重要功能闭源的问题

    ThingsBoard团队为了获取经济收益,推出了闭源的专业版,某些重要的功能模块只存在于专业版之中,包括:

  • TCP/UDP协议代理:ThingsBoard(PE)版的TCP/UDP代理能处理以TCP/UDP 文方式上传的紧凑型数据格式;
  • 计划任务:ThingsBoard(PE)版的计划任务(Schedule)模块能处理周期性任务或未来单次任务的计划编排与触发执行;
  • 数据分析:ThingsBoard的数据分析(Trendz)模块是一个独立的商业软件,其提供的功能包括:
  • ? 分析设备数据的图谱、轮廓及趋势

    ? 预断系统行为并提前做出响应

    ? 定义KPI因子,动态监察并发现其影响作用

    ? 监视设备停留在各种状态上的时间

    ? 以不同的维度过滤、组合、聚合时序数据

    ? 通过可视化仪表板展现分析结果

    3、我们所做的改进

    针对ThingsBoard(CE)版存在的问题,艾瑞博达团队利用自己的应用框架对其进行了整合封装,并进行了必要的功能扩充,显著提升了其性能和可用性。

    详细参见:
    https://iray.info/productinfo/885584.html。

    关键的改进包括:

    (1)应用框架

    我们基于SpringCloud和SpringBoot开发了一套企业级的多租户应用框架,将ThingsBoard的租户与我们的租户相对应。完全接管了ThingsBoard的设备配置、组织机构和用户管理、角色与授权控制。

    前端采用Vue.js,将ThingsBoard的复杂界面(规则引擎、仪表板等)用iFrame方式进行集成。

    (2)导入TDEngine应用

    经过严格比选,我们最终确定选用TDEngine替换Cassandra用于存储时序数据,数据记录以测控点为单位进行组织。有效提高了数据存储的效率。

    (3)引入测控点和测控域概念

    借鉴工控系统的理念,用测控点和测控域分别替换了ThingsBoard的设备(Device)和资产(Asset),同时导入了成套系统的概念,使复杂系统的数据组织更严谨和清晰。

    (4)TCP/UDP支持

    增加了TCP/UDP服务代理和紧凑格式数据解析与打包机制,使TCP/UDP协议支持成为可能。

    (5)HMI的支持

    在工业级物联 应用中,HMI是必要选项。我们通过集成开源项目Fuxa,实现了SVG图形交互界面设计和运行时监控执行的HMI引擎。

    (6)改进的告警条件配置

    使用思维导图的方式简化告警条件的展示,对复杂的告警条件也能直观快捷的配置,同时整个配置方式也更加具有逻辑性。

    (7)规则节点新增与改造

    新增了保存遥测数据到TDengine和类型转换节点,改造了发送短信节点,使其支持腾讯云、阿里云短信平台。

    (8)视频监控支持

    增加了视频流及云台Widget,支持在仪表板中添加实时视频流及云台控制功能。通过集成Kurento+OpenCV,实现了视频流的实时转码和识别计算。

    (9)与资产管理和三维可视化系统相结合

    在艾瑞博达的产品体系之中,将企业级的资产管理系统作为基础支撑,物联 和三维可视化是资产管理的智慧化辅助。通过将资产项与测控点动态数据和GIS/BIM三维空间数据进行动态绑定,从而实现资产管理的动态化、可视化和智能化。

    (10)微服务监控

    使用SkyWalking来进行服务的APM监控,提供了分布式追踪和上下文传输、应用、实例、服务性能指标分析、根源分析、应用拓扑分析、应用和服务依赖分析、慢服务检测功能。使用Prometheus+Grafana实现了服务器监控、应用监控、Postgresql数据库监控、Reids监控、Nacos监控、Prometheus自身监控功能。通过大量仪表板和告警通知,使整个平台的性能、健康的监控及运维直观方便。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年8月11日
    下一篇 2021年8月11日

    相关推荐