IoT -- (四) 物联网系统架构介绍_物联网架构-程序员宅基地

技术标签: 网络  物联网  系统架构  IOT  

物联网系统框架介绍

下面将谈到几个关键问题:

  • 设备如何接入网络?
  • 设备间如何通信?
  • 物联网数据的用途?
  • 如何搭建起一个物联网系统框架呢?它的技术架构又是怎么样呢?
  • 物联网终端软件系统架构?
  • 物联网云平台系统架构?

1. 物联网设备如何接入到网络?

只有设备接入到网络里面,才能算是物联网设备。这里涉及到2个关键点:接入方式以及网络通信方式

设备接入方式:

当前有2种接入方式

  1. 直接接入:物联网终端设备本身具备联网能力直接接入网络,比如 在设备端加入NB-IOT通信模组,2G通信模组。
  2. 网关接入:物联网终端设备本身不具备入网能力,需要在本地组网后,需要统一通过网关再接入到网络。 比如终端设备通过zigbee无线组网,然后各设备数据通过Zigbee网关统一接入到网络里面。常用到本地无线组网技术有Zigbee,Lora,BLE MESH, sub-1GHZ等。

在物联网设备里面,物联网网关是一个非常重要的角色。一个处在本地局域网与外部接入网络之间的智能设备。主要的功能是网络隔离,协议转化/适配以及数据网内外传输。

一个典型的物联网网关架构如下:
在这里插入图片描述

网络通信方式

常用的通信网络主要存在2种方式:

1.移动网络(主要户外设备用)
移动网络2G/3G/4G/5G/NB-IOT等
2.宽带(主要户内设备用)
WIFI,Ethernet等

物联网设备接入网络后如何开展M2M,M2C通信?


物联网设备终端接入网络后,只是物联网应用的开始。 设备接入网络后,设备与设备之间需要互相通信, 设备与云端需要互相通信。 只有互通,物联网的价值才展现出来。 既然要互通,则需要一套物联网通信协议。只有遵循该套协议的设备相互间能够通信,能够交换数据。

常用的物联网通信协议有哪些? 主要有如下协议:MQTT,COAP等,他们有个共同点都是基于消息模型来实现的。设备与设备之间,设备与云端之间通过交换消息来实现通信,消息里面携带了通信数据。

物联网设备之间,设备与云平台能够交换数据后,接下来要干怎么呢?


21世纪,什么最重要?数据。 有了大量的物联网设备数据后, 针对数据,人类可以去挖掘里面的规律,挖掘里面的商业价值,对设备未来的状态进行预测等等。

对于物联网数据应用,分几个层次来讲
1.基础应用:监控

通过物联网收集到设备数据后, 如果设备数据状态超过预设的状态则自动第一时间报警,管理员第一时间开展处理,可以通过远程操作,下达命令。把问题解决在萌芽状态。

2.进阶应用: 报表统计

通过统计方法, 对设备的历史运行数据进行统计分析。可以按不同维度分析出不同报告。然后以图表或者大屏方式展现在管理员面前。 管理员可以快速直观的了解到整个物联网设备运行状况。

3.高级应用: 数据挖掘/机器学习

这部分需要从数据里面挖掘出有价值的东西出来。比如通过一段时间时间设备数据的连续跟踪分析并结合人类过往的设备运维经验,通过机器学习方式预测设备发生故障概率,以及发生故障后可能的引起原因,并给出维修方案。刚才举的例子,是物联网高级应用里面的冰山一角。 通过引入现在火热的AI技术。 物联网就能变成智能物联网了。 也许在不久的将来, 人与设备可以自由对话,设备与设备之间也能够对话并自动做出最优决策。

综合所述,物联网的价值在于提高生产效率,管理效率,极大促进社会生产力的提高。

如何搭建起一个物联网系统框架呢?它的技术架构又是怎么样呢?

物联网终端设备软件系统架构


常见系统框架的总结下来主要存在如下2种: 带RTOS的(处理复杂的业务场景,场景里面通过需要多个事务并行协同完成工作)和不带RTOS的(通常处理的业务场景较单一)

不带RTOS设备终端系统框架:
在这里插入图片描述

带RTOS设备终端系统框架:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZH3cW4y-1636637637861)(https://www.adminiot.com.cn/static/index/img/meta/news/rtos.png)]

RTOS是什么? 实时多任务操作系统,有了它,在终端设备里面可以并行运行多个任务。每个任务负责一个事务。通过并行化运行,响应实时性及效率就得到提升。RTOS实时操作内核一般包含的重要组件如下:

  1. .任务调度
  2. 任务间同步与通信
  3. 内存分配
  4. 中断管理
  5. 时间管理
  6. 设备驱动

以任务调度组件举例:
在嵌入式操作系统中,任务是CPU上最小运行单元。通常一个稍微复杂点IOT APP是由多个任务协同完成。比如有的任务负责处理用户事件输入以及UI显示,有的任务负责处理数据通信,有的任务负责业务逻辑处理。

既然一个系统中有多个任务在跑,而CPU资源确是单一的,这样导致每个时刻只能由一个任务在CPU上跑。 因此为了每个任务都能够在CPU上有运行机会,就涉及到了任务调度概念。 任务调度需要按照一定的规则来,那一般是按照哪些规则来的? 我们常见的调度方式有3种: 一个基于优先级调度的, 一个是基于时间片调度的, 一个是把优先级和时间片结合在一起调度。

以优先级调度举例,在定义任务的时候,给每个任务分配一个优先级,在运行的时候,高优先级的任务都会优先被运行。 直到没有高优先级任务后,低优先级任务才会被运行。 假如低优先级任务获得CPU资源后,这是如果有高优先级任务就绪怎么办呢? 两种处理方式:1. 继续运行 2. 抢占式。 高优先级抢占CPU资源进入运行状态。

其他组件就不一一列举了。

物联网云平台系统架构


在这里插入图片描述

物联网云平台系统架构主要包含四大组件:

  • 设备接入
  • 设备管理
  • 规则引擎
  • 安全认证及权限管理
设备接入

设备接入主要都干些什么呢?
1.包含多种设备接入协议,最主流的是MQTT协议。有些云计算厂商也在MQTT协议上精简协议变成独有的接入协议。
2.并发连接管理,维持可能是数十亿设备的长连接管理。

如果应对数十亿的设备连接管理? 目前开放出来的MQTT代理服务器大都是单机版,最多也就是并发连接十几万设备。因此如果要管理数十亿的连接,需要用到负载均衡,用到分布式架构。在云平台需要部署分布式MQTT代理服务器。

设备管理

一般以树形结构的方式管理设备,包含设备创建管理以及设备状态管理等等。根节点以产品开始, 然后是设备组,再到具体设备。
主要包含如下管理:
产品注册及管理
产品下面的设备增删改查管理
设备消息发布
OTA设备升级管理等

规则引擎

物联网云平台通常是基于现有云计算平台搭建的。 一个物联网成熟业务除了用到物联网云平台提供功能外,一般还需要用到云计算平台提供功能,比如云主机,云数据库等。用户可以在云主机上搭建web 行业应用服务。

规则引擎主要作用是把物联网平台数据通过过滤转发到其他云计算产品上。
比如可以把设备上报的数据转发到table store数据库产品里。

规则引擎一般使用方式:类SQL语言,通过编写SQL语言,用户可以过滤数据、处理数据,并把数据发到其他云计算产品,或者其他云计算服务。

安全认证及权限管理

物联网云平台为每个设备颁发唯一的证书,需要证书通过后才能允许设备接入到云平台。云平台最小授权粒度一般是做到设备级。我们所说的证书一般分为2种:一种是产品级证书,一种是设备级证书。 产品级证书拥有最大的权限,可以对产品下所有的设备进行操作。 设备级证书,只能对自己所属的设备进行操作,无法对其他设备进行操作。

因此每个接入云平台的设备都在本地存储一个证书(其实存在形式是一个KEY,有多个字符串构成)。每次与云端建立连接时,都要把证书带上。以便云端安全组件核查通过。

云计算产品

大数据计算产品, 云基础服务(高性能服务器,云数据库,云网络)等

物联网应用

智慧城市, 智慧农业,工业4.0等

下面一张是来自百度物联网平台架构:
突出展示了物联网设备, 物联网云平台, 云计算平台是如何协同工作的,有较大的参考价值。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43842093/article/details/121276945

智能推荐

Java程序员必会的Linux命令_java后台 linux必会-程序员宅基地

文章浏览阅读278次。1.查找文件 find / -name filename.txt根据名称查找/目录下的filename.txt文件。find . -name “*.xml”递归查找所有的xml文件find . -name “*.xml” |xargs grep “Hello World”递归查找所有文件内容中包含hello world的xml文件grep -H ‘spring’ *...._java后台 linux必会

[第七届蓝桥杯省赛C++B组]煤球数目-程序员宅基地

文章浏览阅读282次。题目来源:第七届蓝桥杯省赛C++B组算法标签:递推题目描述:有一堆煤球,堆成三角棱锥形。具体: 第一层放1个,第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), …如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。题目答案:171700题目思路:由题目可知!...

java多线程-学习总结(完整版)_java多线程asyncserviceexecutor技术总结-程序员宅基地

文章浏览阅读6.7k次,点赞19次,收藏109次。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar_java多线程asyncserviceexecutor技术总结

计算机一代的特点,计算机的特点_第一代计算机的特点-程序员宅基地

文章浏览阅读1.6k次。计算机的特点有哪些计算机的特点计算机的主要特点有哪些?计算机的特点计算机的主要功能特点有哪些计算机的特点计算机的三大特点是什么?计算机的三大主要特点1、运算速度快:计算机内部电路组成,可以高速准确地完成各种算术运算。当今计算机系统的运算速度已达到每秒万亿次,微机也可达每秒亿次以上,使大量复杂的科学计算问题得以解决。例如:卫星轨道的计算、大型水坝的计算、24小时天气算需要几年甚至几十年,而在现代社会..._第一代电脑缺点及优点分析

JS的异步是怎么实现的_js异步是如何实现的-程序员宅基地

文章浏览阅读1k次。JS的异步是怎么实现的一、浏览器的渲染进程1.GUI渲染线程2.JS引擎线程3.事件触发线程4.定时器出发线程5.异步HTTP请求线程二、总结一、浏览器的渲染进程页面的渲染,JS的执行,事件的循环,都在这个进程内进行。1.GUI渲染线程当浏览器收到响应的html后,该线程开始解析HTML文档构建DOM树,解析CSS文件构建CSSOM,合并构成渲染树,并计算布局样式,绘制在页面上。当界面样式被修改的时候可能会触发reflow和repaint,该线程就会重新计算,重新绘制,是前端开发需要着重优化的点。_js异步是如何实现的

C++学习笔记 -多重继承成员的模糊性_hawkol_新浪博客-程序员宅基地

文章浏览阅读207次。什么是多重继承的模糊性?指的是在多重继承下,派生类对基类成员访问不唯一,这就导致模糊性问题,编译系统不知道选择哪个基类成员。​​以上代码在brid和fish两个基类中都有breath()函数,派生类在执行时不知道执行哪个breath()函数,存在二义性。只需更改main()函数如下:void main(){flyfish ff;ff.fly();ff.bird::b..._c++模糊继承

随便推点

RadioGroup动态添加RadioButton,并且获得事件-程序员宅基地

文章浏览阅读532次。由于有许多的RadioButton是动态的,不是固定的一些,所以需要在代码中,动态的添加到RadioGroup中,下面是我的实现方法。1、添加RadioButton到RadioGroup中RadioGroup group;for(int i=0; i<10; i++){ RadioButton tempButton = new RadioButton(this); t..._radiogroup动态绑定

写在24岁,我的4年 Java 程序猿的程序人生_java开发24岁应该有几年工作经验-程序员宅基地

文章浏览阅读432次。前言你好,陌生人!我是木山,时间煮雨,一晃已经工作俩年了,接触编程已经将近四年了,一入Java深似海,从此头发是路人,我也从一个萌新,逐渐成为摸鱼大佬,那个写jsp的男孩,未曾长大,只是框架越用越杂。依然记得大学那会儿翘课去网吧打游戏,记得和室友一起去狂奔去图书馆占位,也记得一起在宿舍通宵熬夜学习,还记得大家一起找工作分享面试经验,更记得毕业季各奔东西的那群可爱的人。原来你是这样的java哦第一次遇见java是在大三,好巧不巧当时正好开了这门课,那会儿也是个马马虎虎的人,上课也爱开小差,没有学到什么_java开发24岁应该有几年工作经验

测试基础+计算机基础_按权展开求和法是什么-程序员宅基地

文章浏览阅读229次。一、计算机基础1.1 什么是软件1.1.1 基础概念计算机 = 硬件 + 软件软件 = 程序 + 文档提示:测试对象是程序和文档(软件)1.1.2 软件的开发阶段第一阶段:需求分析阶段​ 需求分析人员完成 产出物:《需求规格说明书》第二阶段:设计阶段​ 是由系统结构师(分析师)完成 产出物:《概要设计说明书》 《详细设计说明书》第三阶段:编码阶段​ 开发人员(程序员) 产出物:程序(源代码)面试:开发阶段中哪个阶段产_按权展开求和法是什么

vue-cli中config/index.js 里面的配置详解_vue-cli index.build-程序员宅基地

文章浏览阅读1k次。config/index.js 里面的 build配置index: path.resolve(__dirname, '../dist/index.html'),assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '/',index: 模板..._vue-cli index.build

fxml设置背景_JavaFX学习笔记(最全,最详细)-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏14次。文章目录Java: JavaFX桌面GUI开发1、基本概念2、最小框架代码3、控件布局4,初步认识stage窗口5,stage窗口模式(StageStyle)6,screen类的使用7,Group容器的使用8,Button按钮以及简单介绍设置背景颜色和外边框等问题9,JavaFX布局(pane)(1). Pane(2). BorderPane(3). HBox(4). VBox(5) FlowPa..._fxml设置背景

岛屿数量-程序员宅基地

文章浏览阅读6.2k次,点赞3次,收藏7次。题目给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3来源:力扣(LeetCode)链接:htt..._岛屿数量