物联网平台之单体架构

介绍
本文主要介绍平台的单体架构,包括各个组件之间的数据流描述以及所做的一些架构选择。
在单体架构模式下,所有 ThingsKit 组件都在单个 Java 虚拟机 (JVM) 中启动,并共享相同的操作系统资源。由于 ThingsKit 是用 Java 编写的,因此整体架构的明显优势是最小化运行 ThingsKit 所需的内存。您可以在受限环境中使用 512 MB RAM 启动并运行 ThingsKit 进程。明显的缺点是,如果一个组件的消息过载(例如 MQTT 传输),它也可能会影响其他组件。
架构图

c19ffed67c3bd50925cf7c1c51aacbc0.jpeg

传输组件

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分布式数据库插件构造而成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/615435.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springcloud alibaba微服务框架涉及的技术

一、微服务架构中核心模块及其使用技术总览 二、各模块详细说明 1、注册中心 该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务,让服务提供端注册服务,倘若没有注册中心,那客户端就…

JUC下的BlockingQueue详解

BlockingQueue是Java并发包(java.util.concurrent)中提供的一个接口,它扩展了Queue接口,增加了阻塞功能。这意味着当队列满时尝试入队操作,或者队列空时尝试出队操作,线程会进入等待状态,直到队列状态允许操作继续。这…

记录使用极空间NAS通过Docker部署小皮面板(PhpStydy)运行 八图片当面付支付宝接口 PHP项目的遭遇

事件的起因还得从我用八图片的图片加密支付跳转功能,实现打赏金额发案例源码下载链接挣个烟钱的事。八图片的支付接口是PHP web项目的。正好我有个极空间的NAS,搭建到NAS上省去了买主机的费用。 导读 八图片是什么?极空间NAS 部署 PHP网站安装…

eNSP中小型园区网络拓扑搭建(上)

→b站直通车,感谢大佬← →eNSP中小型园区网络拓扑搭建(下)← 不带配置命令的拓扑图已上传~ 项目背景: 某公司准备新建一张网络供企业办公使用。写字楼共3层,一层会客大厅、二层行政部及市场部、三层研发部。一层设…

探讨 vs2019 c++ 里函数指针与函数类型在使用上的语法区别

(1)咱们可以用 decltype () 来判断函数的类型。但以这个类型定义有用的可指向已存在函数的变量,却行不通。测试如下: 如果把上面的注释去掉会报错: 所以函数类型只有语法意义。但在使用上没有函…

InputStream,OutputStream的用法以及相应的案例

1. 文件系统的操作:File类。 2. 文件内容的操作:Stream流。 字符流:IntputStream , OutputStream。 字节流:read , write。 InputStream,OutputStream InputStream和OutputStream都不能被实例…

论文笔记:DeepMove: Predicting Human Mobility with Attentional Recurrent Networks

WWW 2018 1 Intro 根据对百万级用户群的研究,93%的人类移动是可预测的。 早期的mobility预测方法大多基于模式的。 首先从轨迹中发现预定义的移动模式(顺序模式、周期模式)然后基于这些提取的模式预测未来位置。最近的发展转向基于模型的方法进行流动性预测。 利用…

Django性能之道:缓存应用与优化实战

title: Django性能之道:缓存应用与优化实战 date: 2024/5/11 18:34:22 updated: 2024/5/11 18:34:22 categories: 后端开发 tags: 缓存系统Redis优点Memcached优缺点Django缓存数据库优化性能监控安全实践 引言 在当今的互联网时代,用户对网站和应用…

阿里云Redis创建使用

说明:本文介绍如何使用阿里云Redis,包括开通、连接、使用; 开通 进入官网Redis产品页,点击免费试用(白嫖); 选择中间这个,云数据库Redis版; 开通完成后,可在…

应对【核弹级风险】,中小企业如何构建【轻量级】开源治理策略?

开源 三句半 开源治理建团队 制度工具要完善 积极参与开源事 深度实践! 4月份曝光的“XZ后门事件”是一起历时两年半的“开源供应链投毒”典型案例,被定义为“核弹级漏洞事件”,其揭示了开源技术的安全短板,引发了众多企业的紧急…

C++青少年简明教程:基础知识

C青少年简明教程:基础知识 电脑程序设计(Computer programming),或称程序设计(programming),是给出解决特定问题程序的过程,程序设计往往以某种程序设计语言为工具,给出这…

【Android】Kotlin学习之Kotlin方法的声明和传参

方法声明 普通类的方法 静态类的方法 不需要构建实例对象, 可以通过类名直接访问静态方法 : NumUtil.double(1) companion object 伴生类的方法 使用companion object 在普通类里定义静态方法 参数 括号内传入方法 : 当参数是方法时, 并且是最后一个参数 , 可以使用括号外…

关于DDD和COLA的一些总结和思考

1|0思维:面向对象和面向过程 领域驱动设计本质上是讲的面向对象,但是谈面向对象,始终无法绕开面向过程,所以我们先好好说一下面向过程和面向对象这两个概念。 什么是面向过程呢,其实就是我们学习编程时最初被植入的逻辑…

Redis 实战之事务的实现

事务的实现 事务开始命令入队事务队列执行事务总结 一个事务从开始到结束通常会经历以下三个阶段: 1、 事务开始; 2、 命令入队; 3、事务执行。 本节接下来的内容将对这三个阶段进行介绍, 说明一个事务从开始到结束的整个过程。 …

【QVariant类型剖析】

QVariant类型剖析 🌟 官方文档中给出的定义🌟 特性🌸QVariant实战应用🌸项目成果展示 🌟 官方文档中给出的定义 📘Because C forbids unions from including types that have non-default constructors or…

(Java)心得:LeetCode——5.最长回文子串

一、原题 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…

Java并发编程及并发包中类分析

一、并发编程线程基础: 1.什么是线程: 线程是进程中的一个实体,线程本身是不会独立存在的进程是代码在数据集合上的一 次运行活动 , 是系统进行资源分配和调度的基本单位 线程则是进程的 执行路径, 一 个进程中至少有…

2024年5月10日有感复盘

2024年5月10日有感复盘 时间 今天是一个很美好的一天,原因是很平凡,读书很平凡,玩游戏很平凡,然后生活很平凡,未来可期,听歌很舒服,很喜欢一个人呆在图书馆的感觉,很喜欢发呆&…

串口属性中的BM延时计时器问题

如果使用程序修改则需要修改注册表对应位置如下 第一个示例&#xff08;217&#xff09; 第二个示例&#xff08;219&#xff09; 需要注意的事情是修改前必须点查看串口名称&#xff08;例如上图是com5&#xff09; 程序修改&#xff1a; 有没有办法以编程方式更改USB <…

2024第十六届“中国电机工程学会杯”数学建模A题B题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…