【图解物联网】【总结】 第二章 物联网的架构

第二章 物联网的架构

  • 物联网的三个构成因素:设备网关服务器
  • 网关:将不能连接到互联网的设备连接到互联网。选择网关时的标准:
    • 接口:包括有线连接方式,串行通信和USB连接,无线连接,蓝牙和WIFI。
    • 网络接口:以太网、WIFI或3G/LTE。
    • 硬件:考虑CPU和内存相关硬件性能。
    • 软件:用Linux操作系统运行网关,面向嵌入式。
    • 电源:基本使用AC适配器当电源。
  • 物联网的服务的三个部分:前端部分、处理部分、数据库部分。
    • 前端部分:数据接收和数据发送,与多个协议进行交换。
    • 处理部分:保存与处理数据,生成指令。
    • 数据库部分:保存数据。
  • 网关的三个功能:连接设备、数据处理、向服务器发送数据。
  • 从设备把数据发送给服务器的方法:
    • 准备一个使用了HTTP协议的Web API来访问设备。(Web系统)
    • 执行语音和视频的实时通信。(WebSocket和WebRTC)
  • 设备通过HTTP的GET方法和POST方法访问服务器,服务器通过HTTP协议进行响应。
    • GET方法:从服务器上获得数据。
    • POST方法:向服务器传递数据,访问相关数据。
  • WebSocket:一种通信协议,用于在互联网上实现套接字通信。
    • HTTP协议每次发送数据都需要请求和握手。
    • WebSocket则只需一次握手,就可以持续传输数据。
  • MQTT:一种物联网领域内的标准协议,能够实现一对多的通信。由三种功能组成:中介、发布者和订阅者。
    • 中介相当于信箱,起着转发通信的服务器的作用。订阅者一直与中介相连,随时可以申请订阅。发布者只在发布主题时才与中介相连。在发布者发布主题后中介将主题传递给订阅者。
    • 在设备和服务器的通信中,设备相当于发布者,服务器相当于订阅者。
    • 主题采用分层结构,用#和+可以指定多个主题。
      • 例如/Sensor/temperature/#,可以指定所有以/Sensor/temperature/开头的主题。
      • 例如/Sensor/+/room1,可以指定所有开头是/Sensor/,结尾是/room1的主题。
    • 优点:轻量化,能在网络带宽低、可靠性低的环境下运行。消息小,协议机制简单,在有限硬件的条件下也能运行。
    • QoS:是Quality of Service的简称,MQTT里存在3个等级的QoS。“发布者和中介之间“以及”中介和订阅者之间“都分别定义了不同的QoS等级,以异步方式运行。如果后者的QoS小于前者的QoS,则后者的QoS会被降级到指定的QoS。
      • QoS 0:最多发送一次消息,发送要遵循TCP/IP的“Best Effort(尽力服务,在网络接口发生拥塞时,不顾及用户或应用,直接丢弃数据包,直到业务量有所减少)“。
      • QoS 1:至少发送一次消息。中介一接收到消息就会向发布者发送一个叫作“PUBACK“消息的响应。
      • QoS 2:准确发送一次消息。QoS 2发送的消息中含有消息ID。中介收到消息后返回PUBREC消息。发布者再发送PUBREL消息,中介再返回PUBCOMP消息,之后中介才向订阅者传递消息。
      • QoS 2可能会影响到消息的传递时间,QoS 1和QoS 2结合使用可以避免收到重复的消息。人们通常使用的是QoS 0。
    • Retain:订阅者只能接收到订阅之后发布的消息,但是如果发布者之前发布的消息中有Retain标识,则仍能够在订阅后接收到。
    • Will:如果遇到中介的I/O错误或网络故障等情况,发布者可能会突然从中介断开,此时,中介会将Will消息传递给订阅者。如果是发布者发布DISCONNET正常断开,则不会发送Will消息。
    • Clean session:用于指定中介是否保留了订阅者的已订阅状态。当连接时,订阅者把该标志设定为0或1.0代表保留session,1代表不保留。
      • 若该标志为0,则订阅者断开后,中介讲以订阅并且发布者发布的主题保存,等待下次订阅者连接时进行发送。
      • 若标志为1,则只会收到此次连接发布者发布且已订阅的主题。
  • 数据格式:通过Web协议来使用的数据格式中,具有代表性的有XMLJSON
    • 相比而言,XML的格式更容易理解,但字符数较多,数据量大。JSON数据量小,更适合使用低速线路通信的情况。
    • MessagePack格式:二进制格式的数据。服务器能直接以二进制形式接收数据,更迅速地处理数据。

处理数据

  • 数据处理的四种方法:数据分析、数据加工、数据保存和向设备发出指令。
  • 两种典型的数据处理方式:批处理和流处理。
    • 批处理:隔一段时间就分批处理一次积攒的数据。
      • 处理大数据通常使用一种叫作分布式处理平台的软件,具有代表性的有Hadoop和Spark。
      • Apache Hadoop:一个对大规模数据进行分布式处理的开源框架。
        • Hadoop具有MapReduce机制和一种叫做**分布式文件系统(HDFS)**的机制。
        • MapReduce是一种专门用于在分布式环境下高效处理数据的机制,由Map、Shuffle、Reduce三个处理组成。
        • Map:给要处理的数据分类。
        • Shuffle:把相同种类的数据归到一类。
        • Reduce:把分好类的数据合在一起。
        • HDFS:把数据分割并存入多个磁盘里,读取时直接从多个磁盘里同时读取分割好的数据。
      • Apache Spark:同样是一个分布式处理大规模数据的开源框架。
        • Spark用一种**弹性分布数据集(RDD,Resilient Distributed Dataset)**的数据结构来处理数据。
        • RDD能够把数据放在内存上,不经过磁盘访问也能处理数据。并且一旦生成RDD就无法更改,通过标志来在处理前和处理后的RDD之间建立联系。其在反复处理同一数据时非常有优势。
    • 流处理:不保存数据,按照到达处理服务器的顺序对数据依次进行处理。
      • Spark Streaming:是Apache Spark中的库,通过Spark Streaming,能把Apache Spark拿到流处理来使用。其通过RDD进行数据分割,对分割的数据进行小批量的批处理来达到流处理的效果。
      • Apache Storm:是一种实现流处理的框架,用Storm处理的数据叫Tuple
        • Storm的处理过程由SpoutBolts两项处理组成,这种结构叫做Topology
        • Spout:把接收到的数据分割成Tuple输出Streams。
        • Bolts:接收Spout以及其他Bolts输出的Streams,并以Tuple为单位进行处理,然后输出新的Streams。

存储数据

  • 数据库的作用:保存并灵活运用数据,还包括从保存到数据中找出与所指定条件相符的数据。
  • 数据库的种类:关系数据库、键值存储、文档型数据库。
    • 关系数据库(RDB):具备表格型数据结构。使用SQL语言进行数据的提取、插入以及删除。
      • SQL语言非常简洁,但一旦确定了结构很难进行改变,对于设备间的关系结构的改变很难适应,需要仔细考虑设备传来的数据性质再决定结构。可以通过引入“指针”的概念来改善结构。
      • 关系数据库不擅长保存图像和语音等二进制形式的数据。能用一种叫做**BLOB(Binary Large Object,二进制大对象)**的数据形式来达到保存的目的。
    • 键值存储
      • 近来出现的一类新兴数据库NoSQL,其使用SQL以外的各种方法来操作数据库,键值存储属于NoSQL中的一种。其思想是将一种“值”和与其对应的“键”的集合保存在一起。
      • 键值存储可以保存在内存中也可以保存在硬盘中,各有优劣。有一种叫做Redis的键值存储兼具两种优点,通常情况下保存在内存中,但是可以随时保存到硬盘里。
    • 文档型数据库:也是NoSQL中的一种,能够以XML和JSON两种结构化文档格式保存数据。
      • MongoDB:一种文档型数据库,采用JSON的格式保存数据,还可以进行检索。对于设备的传输结构的变化并不敏感,非常适合于无法读出设备的数量和数据的种类的情况。

控制设备

  • 发送服务器的目的:向设备发送数据并控制设备。
  • 发送服务器的运行方式:通过设备申请来发送数据(同步传输),发送服务器在任意时间发送数据(异步传输)。
  • 使用HTTP发送数据
    • 最简单的方法。
    • 使用者需要定期从设备进行轮询连接。原因一:无法确定唯一地址。原因二:考虑到设备频繁断电和移动线路的传输费用。
  • 使用WebSocket发送数据:需要设备连接发送服务器,只要建立一次连接就能实现一直发送。
  • 使用MQTT发送数据:通过运用MQTT的特性,即使是在休眠中或者电源关闭的状态下也能接收到数据。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值