大家好,欢迎来到IT知识分享网。
2.1 物联网的整体结构
2.1.1 整体结构
物联网大体上有3 个构成要素,如图2.1 所示。一个是设备,另一个是网关,再来就是服务器。关于设备的基本结构和使用的技术,我们会在第3 章详细说明。因此本章并不涉及设备。我们来详细看一下用怎样的机制才能实现网关和服务器。
2.1.2 网关
选择网关时有几项重要的标准:
接口
网络接口
硬件
相对于一般计算机而言,网关在CPU 和内存这些硬件的性能方面比较受限。我们需要确定让网关做哪些事情,也需要考虑到它的硬件性能。
软件
电源
说起来,电源很容易被人们遗忘。网关基本上都是使用AC 适配器当电源的,因此需要事先在设置网关的场所准备好电源。如果网关本身搭载有电池,那么就不需要准备电源了,不过需要进行充电等维护工作。
2.1.3 服务器的结构
在功能方面,物联网服务大体上可分为3 个部分,本书分别称它们为前端部分、处理部分,以及数据库部分(图2.3)。
2.2 采集数据
网关的作用
就如我们前面说的那样,网关是一台用于把不能直接连接到互联网的设备转发连接到互联网的设备。再往细了说,网关是由3 种功能构成的(图2.4)。
这3 种功能分别是连接设备功能、数据处理功能和向服务器发送数据的功能。此外,实际使用网关执行应用时,还需要其他的管理应用功能。管理应用功能会在第5 章单独介绍。
接下来就来详细看看网关的3 种功能。
连接设备
设备和网关是通过各种各样的接口连接的。当通过传感器终端连接时,多数情况下是传感器单方面持续向服务器发送数据。根据设备不同,也存在设备申请从外部获取数据时,服务器向设备发送数据的情况,这时就需要通过网关申请数据。
生成要发送的数据
接下来把从设备接收到的数据转化成能发送给服务器的格式。在表示从设备发送到网关的数据时,也有把4 位二进制数(如二进制数据和BCD 码)替换成一位十进制数数据来表示的(图2.5)。这样的数据不会被直接发给服务器,而是在网关处被转化成数值数据和字符串的格式。
发送数据给服务器
向物联网服务发送数据。此时,需要根据服务器来决定发送数据的时间间隔和发送数据的协议。另外,为了能从物联网的服务器接收消息,还得事先准备好这种功能。
2.3 接收数据
2.3.1 数据接收服务器的作用
数据接收服务器就跟它的字面意思一样,负责接收从设备发送来的数据。它在设备和系统之间起着桥梁作用。有很多种方法可以从设备把数据发送给服务器,其中具有代表性的包括以下两种方法。
2.3.2 HTTP协议
关于GET和POST本身,可以通过这篇文章了解了解,这里不做重点来讲解。
99%的人都理解错了HTTP中GET与POST的区别
2.3.3 WebSocket
这样一来,在发送语音数据等连续的数据,以及发生与服务器的相互交换时,就能使用WebSocket 了。WebSocket 自身只提供服务器与客户端的数据交换,因此需要使用者另外决定在应用层上使用的协议。
2.3.4 MQTT
MQTT(MQ Telemetry Transport,消息队列遥测传输)是近年来出现的一种新型协议,物联网领域会将其作为标准协议。MQTT 原本是IBM 公司开发的协议,现在则开源了,被人们不断开发着。MQTT 是一种能实现一对多通信(人们称之为发布或订阅型)的协议。它由3 种功能构成,分别是中介(broker)、发布者(publisher)和订阅者(subscriber)(图2.8)。
像这样借助于中介的发布/ 订阅型通信,MQTT 就能实现物联网服务与多台设备之间的通信。另外,MQTT 还实现了轻量型协议。因此它还能在网络带宽低、可靠性低的环境下运行;又因为消息小、协议机制简单,所以在硬件资源(设备、CPU 和内存等)受限的条件下也能运行,可以说是为物联网量身定做的协议。MQTT 本身还具备特殊的机制,下面我们会对其逐一说明。
QoS
QoS 是Quality of Service(服务质量)的简称。这个词在网络领域表示的是通信线路的品质保证。MQTT 里存在3 个等级的QoS。“发布者和中介之间”以及“中介和订阅者之间”都分别定义了不同的QoS 等级,以异步的方式运行。此外,当“中介与订阅者之间”指定的QoS 小于“发布者和中介之间”交换的QoS 时,“中介与订阅者之间”的QoS会被降级到指定的QoS。QoS 0 指的是最多发送一次消息(at mostonce)(图2.11),发送要遵循TCP/IP 通信的“尽力服务”。消息分两种情况,即到达了一次中介处,或没有到达中介处。
Retain
Will
当发布者使用DISCONNECT(断开连接)消息明确表明连接已断开时,Will 消息就不会被发送给订阅者。
Clean session
我们可以用表2.1 所示的几种产品来实现MQTT。是否支持前文介绍的功能则取决于中介的种类。
除此之外,一个叫作Paho 的库还公开了发布者和订阅者等客户端功能。不仅Java、JavaScript、Python 配备了Paho,连C 语言和C++ 都配备了Paho。因此,我们能够将其与设备结合起来并加以使用。
2.3.5 数据格式
前面我们围绕用于接收数据的通信过程,即协议进行了讲解。事实上,数据就是通过协议来进行交换的。当然,就如我们前文所说,这条规则在物联网的世界里也是不变的。数据要经过协议进行交换,而数据的格式也很重要。通过Web 协议来使用的数据格式中,具有代表性的包括XML 和JSON(图2.17)。
2.4 处理数据
2.4.1 处理服务器的作用
很显然,处理服务器就是处理接收到的数据的地方。“处理”是一个抽象的词语,例如保存数据,以及转换数据以使其看上去更易懂,还有从多台传感器的数据中发现新的数据,这些都是处理。使用者的目的不同,处理服务器的内容也各异。不过说到数据的处理方法,它可以归纳成以下4 种:数据分析、数据加工、数据保存以及向设备发出指令(图2.20)。
关于数据的分析和加工,有两种典型的处理方式,分别叫作“批处理”和“流处理”。首先就来说说这个“批处理”和“流处理”。
2.4.2 批处理
Apache Hadoop
Apache Hadoop 是一个对大规模数据进行分布式处理的开源框架。Hadoop 有一种叫作MapReduce 的机制,用来高效处理数据。MapReduce是一种专门用于在分布式环境下高效处理数据的机制,它基本由Map、Shuffle、Reduce 这3 种处理构成(图2.21)。
Apache Spark
Apache Spark 也和Hadoop 一样,是一个分布式处理大规模数据的开源框架。Spark 用一种叫作RDD(Resilient Distributed Dataset,弹性分布数据集)的数据结构来处理数据(图2.22)。
2.4.3 流处理
Spark Streaming
Spark Streaming 是作为Apache Spark(在“批处理”部分介绍过)的库被公开的。通过Spark Streaming,就能够把Apache Spark 拿到流处理中来使用(图2.23)。
Spark Streaming 是用RDD 分割数据行的,它通过对分割的数据执行小批量的批处理来实现流处理。输入的数据会被转换成一种叫作DStream 的细且连续的RDD。先对一个RDD 执行Spark 的批处理,将其转换成别的RDD,然后按顺序对所有RDD 反复执行上述处理来实现流处理。
Apache Storm
Apache Storm 是用于实现流处理的框架,结构如图2.24 所示。
2.5 存储数据
2.5.1 数据库的作用
2.5.2 数据库的种类和特征
这里我们一并为大家说明数据库的种类和特征,以及为了实现物联网服务而处理设备数据时的要点。
关系数据库
数据库把数据保存到硬盘,因此经常会发生对硬盘的访问(磁盘I/O)。这样一来,这步处理就比其他处理要慢。就系统中而言,这是处理速度方面容易产生瓶颈的一个地方。除了介绍的内容之外,还有一些需要大家注意的地方,希望大家加深对这部分内容的理解并将其灵活运用。
键值存储
文档型数据库
文档型数据库和键值存储一样,都属于NoSQL 数据库的一种。文档型数据库能以XML 和JSON 这种结构化文档的格式保存数据。特别是近年来,有一种叫作MongoDB 的文档型数据库很受欢迎,它以JSON 的格式保存数据(图2.29)。
MongoDB 能够直接保存JSON 格式的数据,还能用JSON 的值进行检索。这样一来,在用JSON 交换传感器的信息时,就能直接对数据进行保存和使用。即使增加了新的数据条目或是新增了设备,也能直接以JSON 格式保存数据,因此,不需要像RDB 那样考虑表格的结构。非常适合用于无法读出设备的数量和数据的种类等情况,以及保存传感器等设备的数据。
这里对数据库的讲解也是十分简略的。数据库本身也是一门作者所学专业要单独学习的一门课程,其中的知识也不是一两句能解释的清楚的。在物联网工程的开发过程中,掌握数据库的使用方法也是十分必要的一环。详细可以参考本章附件《电子书《数据库系统原理及MySQL应用教程(第2版)》》
2.6 控制设备
2.6.1 发送服务器的作用
2.6.2 使用HTTP发送数据
要实现数据发送,HTTP 是最简单的方法。在这个方法里,发送服务器是等待接收HTTP 请求的Web 服务器。设备向这台服务器申请发送数据,作为响应,服务器把数据发给设备(图2.30)。
2.6.3 使用WebSocket发送数据
使用WebSocket 时,需要用设备连接发送服务器,并确立WebSocket连接。只要建立了一次WebSocket 连接,就能实现从发送服务器和客户端发送数据。
2.6.4 使用MQTT发送数据
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122692.html