物联网平台之单体架构

介绍

本文主要介绍平台的单体架构,包括各个组件之间的数据流描述以及所做的一些架构选择。

在单体架构模式下,所有 ThingsKit 组件都在单个 Java 虚拟机 (JVM) 中启动,并共享相同的操作系统资源。由于 ThingsKit 是用 Java 编写的,因此整体架构的明显优势是最小化运行 ThingsKit 所需的内存。您可以在受限环境中使用 512 MB RAM 启动并运行 ThingsKit 进程。明显的缺点是,如果一个组件的消息过载(例如 MQTT 传输),它也可能会影响其他组件。

架构图

传输组件

ThingsKit提供基于 MQTT、HTTP 和 CoAP 的 API,可用于您的设备应用程序/固件。每个协议 API 均由单独的服务器组件提供,并且是 ThingsKit "传输层"的一部分。下面列出了组件的完整列表和相应的文档页面:

  • HTTP 传输组件,平台提供了设备 API 接入;
  • MQTT 传输组件,平台提供了直连设备 API接入,请参考;还有网关设备 API接入;
  • CoAP 传输组件,平台提供了设备 API 接入,;
  • TCP/UDP 传输组件,平台提供TCP设备 API接入;还有UDP设备 API接入;

每个传输组件将数据推送到规则引擎,并且还可以使用核心服务向数据库发出请求以验证设备凭证等。

由于 ThingsKit 在传输和核心服务之间使用非常简单的通信协议,因此很容易实现对自定义传输协议的支持,例如:通过JT808、HJ212、IEC104等,都可以在传输层写脚本来完善。

数据库组件

数据库组件,主要由PostgreSQL 数据库,再加上TimescaleDB时序数据库插件或者Cassandra分布式数据库插件构造而成。

核心服务组件

核心服务组件主要功能:

  • REST API 调用
  • 设备遥测数据的订阅
  • 监控设备的连接状态

ThingsKit节点使用 Actor System 来实现租户、设备、规则链和规则节点 Actor。平台节点可以加入集群,每个节点都是平等的。服务发现是通过 Zookeeper完成的。ThingsKit节点使用基于实体ID的一致哈希算法在彼此之间路由消息。因此,同一实体的消息将在同一 ThingsKit 节点上处理。平台使用gRPC在 ThingsKit 节点之间发送消息。

外部系统组件

数据库组件,主要由PostgreSQL数据库,再加上TimescaleDB时序数据库插件或者Cassandra分布式数据库插件构造而成。

相关推荐
SL_staff10 分钟前
项目延期时如何用四类角色机制实现责任锚定?一线技术实践拆解
java·低代码·团队管理
wno70414 分钟前
Spring Security Session管理
java·后端·spring
吃饱了得干活15 分钟前
主键选择:从单机到分布式,一个被低估的性能决策
java·后端
haluhalu.20 分钟前
初识 Protobuf:微服务跨语言通信的一份契约
java·c语言·开发语言·c++·python
xcl092531 分钟前
宠物商城社交托运购物系统开发实战:从架构设计到完整实现指南
java·spring boot
没差c35 分钟前
RetrofitClient写接口、导包、配置、路径
java·spring boot·okhttp
当下新鲜事41 分钟前
空调机房水泵常见问题解答:赛莱默B&G冷冻泵与冷却泵技术说明
大数据·运维·物联网·业界资讯
SL_staff1 小时前
MQTT Topic权限越界:JVS-IOT中系统Topic与自定义Topic的权责边界与验证实践
java·物联网·全栈
敲代码的瓦龙1 小时前
Jetpack?DataBinding!!!
android·java·开发语言·mysql·android-studio
传感器与混合集成电路1 小时前
火箭低温推进剂测量:贮箱壁温与介质温度两类测点的传感器选型
物联网