物联网产品中,终端、网关、协议、PaaS、SaaS之间的关系
在互联网产品中,经常提到的终端、网关、协议、PaaS、SaaS之间,到底有什么关系呢?
一、基本概念
在百度/其他地方搜集的信息中,对于终端、网关、协议、PaaS、SaaS的解释各有不同,整理如下:
- 终端:物联网产品中的终端是指与物联网云端通信的设备,通常包括智能手机、平板电脑、智能穿戴设备等。终端用户通过终端设备连接到云端,实现物联网的数据采集、传输和处理。
- 网关:网关是物联网产品中的重要组成部分,主要用于在不同设备和系统之间进行数据交换和转换。网关可以将不同的协议、数据格式和通信方式进行转换,以便终端设备可以与云端进行通信。
- 协议:协议是在物联网产品中实现数据传输和交换的重要技术。不同的设备和系统之间使用的协议可能不同,因此需要通过协议转换来实现数据的互通。常见的协议包括WiFi、蓝牙、ZigBee等。
- PaaS:PaaS是指基于云端平台的开发服务,提供开发人员所需的开发环境和工具,帮助开发人员快速构建和部署物联网应用程序。PaaS平台通常包括代码编写、测试、部署和监控等功能。
- SaaS:SaaS是指基于云端平台的服务,用户无需安装任何软件或硬件,只需通过互联网即可使用物联网应用程序。SaaS服务通常包括应用程序的部署、管理和更新等功能。
用一张图来解释下相关定义信息:

举一个小例子:
小A的妈妈买了一个定位器「设备」安装到他电动车上,小A骑电动车出去上学。有一天小A在路上发生了车祸,发生车祸的时候,小A和他的车被碰倒了,于是「设备」发送“告警信息”给小A的妈妈的手机,说小A在路上出车祸了,你快去救他!
以上信息中,上报给谁?这时候上报的位置是「网关」,但是设备不会像我们人类一样用语言说:“喂,你的儿子/女儿在什么什么时间,在哪里哪里好像被车撞到了,然后摔倒了,触发了我这个告警哦”,他们会和「网关」之间协商好用某一种语言来代表这种信息,这一种语言,就是「协议」。那么「网关」在其中扮演什么角色?网关,就是这个“翻译官”,他把设备上报给他的内容,翻译成另一种语言,来和「PaaS」进行沟通交流。
网关把信息传给「PaaS」之后,「PaaS」经过计算后监测到,这个信息很重要啊,我要赶紧推送给他妈,让他的妈妈知道小A出车祸了,快去救他,于是「PaaS」赶紧把这条信息,推送给了小A妈妈的手机上的设备绑定的软件,也就是「SaaS」所以大家对设备、协议、网关、PaaS、SaaS有了基本了解了吧。
二、不同「角色」之间使用不同「语言」的原因
我们都知道终端到网关之间有对应的协议,网关解析信息后到PaaS又是另外一种语言,主要有以下几个原因:
- 可扩展性:终端和网关之间需要直接互操作,但PaaS的用户是开发人员,它提供的是工具和组件。因此,直接使用终端和网关之间的语言可能会导致有不同的技术栈和复杂性。如果使用不相同的语言,则可以提供更好的灵活性和可扩展性。
- 安全性:终端到网关和网关到PaaS之间的信息传递可能涉及到敏感信息,所以需要额外的数据验证来确保信息安全,例如数据加密和身份验证。而使用不同的语言可以提供更好的安全性和保护机制。
- 可维护性:使用不同的语言可以使下游系统更加具有维护性质,并且更加易于管理,这样的话开发人员可以使用不同的语言框架来编写应用程序,且此类语言框架的安全性易开发性等已经被测试验证。
- 另外有时还有设备本身的原因,设备的成本较低时,内存也较小,只能通过01序列或简单的机械处理信息,无法做到像PaaS云服务器一样存储庞大的底层语言,当然并非针对全部设备而言。
三、如何解决现实中遇到的问题?
背景:在曾经的车联网产品设计生涯中,出现过一个问题,说有一个较大的客户购买了n台定位器设备,但是这些设备里其中有80%的设备已经成功导入到saas平台,并且已经开机了,但是平台显示并没有激活,功能却可以正常使用,开发同事查看代码后,发现设备已经正常激活上线。
分析:那么我们从产品的角度分析下,设备正常的工作流程,设备上报信息(登录包、心跳包)给到网关,网关解析后,到达PaaS,PaaS存储相关登录日志/时间等信息后,同步至SaaS,SaaS正常接受登录包,后端将状态调整为激活,看起来是没有什么问题的,按理来说设备是可以正常激活上线。
以上假想是建立在,设备已经导入平台后,再进行开机上线的,上线后可以正常通过协议上报心跳包、登录包等,若设备先开机上线,再导入到平台,此时,设备的心跳包、登录包已经在导入前上报过相关信息,则无法及时通过上报自己的登录包等包体,网关无法进行解析,则自然而然,状态未激活。
相关文章:
物联网产品中,终端、网关、协议、PaaS、SaaS之间的关系
在互联网产品中,经常提到的终端、网关、协议、PaaS、SaaS之间,到底有什么关系呢? 一、基本概念 在百度/其他地方搜集的信息中,对于终端、网关、协议、PaaS、SaaS的解释各有不同,整理如下: 终端࿱…...
6款实用的Git可视化管理工具
前言 俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。我们在团队开发中统一某个开发工具能够降低沟通成本,提高协作效率。今天给大家分享6款实用的Git可视化管理工具。 Git是什么&…...
python_selenium零基础爬虫学习案例_知网文献信息
案例最终效果说明: 去做这个案例的话是因为看到那个博主的分享,最后通过努力,我基本实现了进行主题、关键词、更新时间的三个筛选条件去获取数据,并且遍历数据将其导出到一个CSV文件中,代码是很简单的,没有…...
MindSpore Serving基于昇腾910B实现大模型部署
一、Why MindSpore Serving 大模型时代,作为一个开发人员更多的是关注一个大模型如何训练好、如何调整模型参数、如何才能得到一个更高的模型精度。而作为一个整体项目,只有项目落地才能有其真正的价值。那么如何才能够使得大模型实现落地?如…...
mysql原理--InnoDB的Buffer Pool
1.缓存的重要性 对于使用 InnoDB 作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是以 页 的形式存放在 表空间 中的,而所谓的 表空间 只不过是 InnoDB 对…...
Redis不同环境缓存同一条数据,数据内部值不同
背景 现实中,本地环境(dev)和开发环境(feature)会共同使用相同的中间件(本篇拿Redis举例),对于不同环境中的,图片、视频、语音等资源类型的预览地址url,需要配…...
MySQL之导入、导出远程备份
一、Navicat工具导入、导出 1.1 导入 第一步: 右键,点击运行SQL文件 第二步: 选择要运行的SQL,点击开始 第三步: 关闭即可 1.2 导出 第一步: 右键选择,导出向导 第二步: 选择SQL脚…...
OpenGL学习笔记-Blending
混合方程中,Csource是片段着色器输出的颜色向量(the color output of the fragment shader),其权重为Fsource。Cdestination是当前存储在color buffer中的颜色向量(the color vector that is currently stored in the …...
支持 input 函数的在线 python 运行环境 - 基于队列
支持 input 函数的在线 python 运行环境 - 基于队列 思路两次用户输入三次用户输入 实现前端使用 vue element uiWindows 环境的执行器子进程需要执行的代码 代码仓库参考 本文提供了一种方式来实现支持 input 函数,即支持用户输的在线 python 运行环境。效果如下图…...
欧拉Euler release 21.10 (LTS-SP2)升级openssh至9版本记录
背景:安扫漏洞,需要对openssh经行升级 1.先查看升级前的openssh版本 2.避免升级失败断开远程登录,先开启telnt服务用于远程连接(这步可查看其他博客) 3.从欧拉官网下载rpm包,https://www.openeuler.org/zh…...
php 数组中的元素进行排列组合
需求背景:计算出数组[A,B,C,D]各种排列组合,希望得到的是数据如下图 直接上代码: private function finish_combination($array, &$groupResult [], $splite ,){$result [];$finish_result [];$this->diffArrayItems($array, $…...
Python从入门到网络爬虫(OS模块详解)
前言 本章介绍python自带模块os,os为操作系统 operating system 的简写,意为python与电脑的交互。os 模块提供了非常丰富的方法用来处理文件和目录。通过使用 os 模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强…...
人机交互不是人机融合智能
一、人机交互和人机融合智能是两个不同的概念 人机交互是指人类与计算机之间的信息交流和操作方式,包括输入和输出界面、交互技术、用户体验等方面。人机交互的目标是提供用户友好的界面和自然的交互方式,使人类能够与计算机更加高效地进行沟通和协作。 …...
RabbitMQ解决消息丢失以及重复消费问题
文章目录 1、概念2、基于ACK/NACK机制2.1 基于Spring AMQP框架整合ACK/NACK机制2.2 测试消费失败1.02.3 测试结果1.02.4 测试MQ宕机2.5 测试结果2.0 3、RabbitMQ 如何实现幂等性设计3.1 幂等服务设计思路3.1.1 通过雪花算法生成分布式唯一ID3.1.2 通过枚举类,设计Me…...
docker 安装redis集群
一、准备6台机器 二、6台机器分别拉取镜像: docker pull redis三、6台机器分别建立挂载文件夹 mkdir -p /home/redis/data四、6台机器分别执行容器操作 docker run --restartalways -d --name redis-node-1 --net host --privilegedtrue -v /home/redis/data:/da…...
锂电池制造设备中分布式IO模块优势
在“碳达峰、碳中和”目标推动下,新能源汽车当下发展势头正盛,而纯电动车的核心部件则是:锂电池。动力型锂电池作为新能源汽车核心零部件,其发展与新能源汽车行业息息相关,迎来广阔的市场空间。 为何采用I/O模块&#…...
Android Room数据库升级Migration解决方案
一、介绍 Android Room 是 Android 官方提供的一个轻量级数据库框架,用于在 Android 应用程序中管理数据持久性。它简化了数据库访问,提供了更安全、更快速的数据存储方式,并使得数据操作更加便捷。 二、Room的特点(八股文可以参考) 以下是…...
离线安装docker和docker-compose
1.下载 docker Index of linux/static/stable/x86_64/ docker-compose Overview of installing Docker Compose | Docker Docs 2.docker /etc/systemd/system/docker.service [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.docker.…...
奇怪的事情记录:外置网卡和外置显示器不兼容
身为程序员,不应该对世界上的稀奇古怪的事情感到惊讶(毕竟,大部分都是程序员自己搞出来的)。 外置网卡和外置显示器不兼容 mbp2019intel版,win10,外接有线网卡,平时用得很好,接上外…...
【大数据进阶第三阶段之Hive学习笔记】Hive基础入门
目录 1、什么是Hive 2、Hive的优缺点 2.1、 优点 2.2、 缺点 2.2.1、Hive的HQL表达能力有限 2.2.2、Hive的效率比较低 3、Hive架构原理 3.1、用户接口:Client 3.2、元数据:Metastore 3.3、Hadoop 3.4、驱动器:Driver Hive运行机制…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
