开发者学堂课程【物联网平台实操入门:IoT设备接入基础(一)】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/1031/detail/15122
IoT设备接入基础(一)
今天主要介绍的是设备接入,会分成四块来介绍。第一块介绍的是IOT的一个介入架构,介入架构主要会分成几块来介绍,首先介绍整个IOT平台的全链路的一个架构,第二步会介绍一下接入层的一些能力,再介绍接入层的一些设计,这是第一部分。
第二部分会介绍设备的身份,主要是讲IOT平台有哪些身份体系。
第三部分介绍的是设备安全,因为现在平台上的各种设备,比如有指纹锁,监控,还有支付类的一些业务对安全的要求都比较高,所以也会讲解接入层对安全做了哪些保障。
第四部分会介绍设备支持的接入协议,包括怎么跟身份配合来接入平台,同时可能会简单讲解一些稳定性的保障,这些方面的事情,主要就分为四块。
一.IoT接入架构
首先来看一下第一块部分,第一块是整个全链路的接入,主要分成三部分。最左边的一部分主要是各种类型的设备和一些数据的上云,就是通过设备数据采集一些传感器上云,中间这部分是一个物联网平台,包括设备的接入,内部数据的处理,通过规则引擎做数据的流转,从物联网平台流出,物联网平台的数据流出有两种方式,一种就是流出到阿里云的云产品里面,由用户的业务服务器从这些云产品里获取设备上报的一些数据。第二种方式是通过用户自己搭建一个业务服务器,通过AMQP这个标准协议把数据从规则引擎直接流转到用户的业务服务器,这样可以减少中间通过云产品中转的代价。
从左到右主要是这三块,先讲解左边这部分。左边这部分是设备的接入,有各种设备。这些设备按通信类型一般会分为两种,一种是局网的设备,一种是广域网的设备。针对广域网设备,比如2g3g4g这种设备,可能直接通过广域网直接联络到中间的物联网平台。如果针对一些局网的设备,比如是一些灯泡之类的,可能它没法直接上云。它需要通过一些,比如它采用的是一些BLE,ZigBee,或者Modbus这种协议,首先它需要连到边缘网关,通过边缘网关来代理上云,这个是根据通信类型的两种连云方式。
还可以根据协议来分,可以分为标准协议接入和一些非标准协议接入,标准协议有很多,比如像物联网平台比较通用的是MQTT/CoAP/ HTTPS,还有行业的一些标准协议。非标准协议指的是私有协议,可能是各个设备厂商或者是企业自定义的协议。比如物联网平台支持的是MQTT/CoAP/ HTTPS这种标准协议,像行业的一些标准协议或者一些私有协议,一般要接入物联网平台是通过自建的一个接入服务器,在接入服务器上面集成泛化协议的sdk,再通过私有服务器将私有协议通过方法SDK转换成标准的MQTT/ HTTPS这种协议,通过这种方式连接到接入平台。
至于物联网平台,刚才也讲解到一个是设备接入,一个是消息的处理,一个是数据规则引擎,就是指数据流转出去。物联网平台支持一些基础的能力,包括设备管理,设备认证,物模型。物模型是指设备数据的物的描述。还有其他方面的能力,比如监控运维,数据分析,这些最基本的能力。大致就是这样的流程,从左边设备传感器上采集数据,到接入层,在接入层物联网平台做一些内部处理,通过规则引擎流转出去,最终流转到用户的业务服务器上。流转可分为两种方式,一种是MQTT协议,一种是通过云产品中转再流转到业务服务器。这个就是整个基础链路的一个全链路的架构。
第二部分是介绍接入服务器的能力,也就是接入服务器做了哪些事情。比如左边就是一个接入服务器的基础能力,它主要包括五块内容。第一部分就是安全保障。安全保障不管对于哪个平台来说肯定都是第一位。包括稳定性的保障,就相当于企业业务都在平台上面,如果平台稳定性出分歧会对企业业务形成损害,相当于完全不可用。特别是针对接入层,如果接入层出了问题,基本上所有设备都接入不上,所有业务都已经停滞了。所以说对用户的影响会非常大,稳定性保障也是非常重要的一部分。
第三个是海量设备的接入。海量设备的接入更多的是从系统架构上面来保障一些海量设备的接入问题。第四部分是一个全球就近接入,因为设备现在是各个国家都有,比如有美国,新加坡,那不能让国外的设备接入到国内来,那么网络稳定性这种方面,包括网络的稳定,发条消息的延迟,都可能会变得非常差,所以还支持全球接入的能力。第五个是支持多种标准协议,为什么是多种标准协议,因为设备的碎片化是非常严重的,比如有些设备是用电池的,有些设备摄像头可能相对来说能力还好。不同的设备,就像用电池的设备,让它用HTTP这种对流量耗的比较大的协议,对用户的设备来说肯定是一个很大的挑战,包括rome等。
所以针对不同的设备提供了不同的协议,可以让设备根据自己的设备自己的资源情况来选择各种不同的标准协议来接入。右边其实就是针对左边能力基础的实现,比如像就近接入,其实就相当于提供了八个地址和一些基础的能力,包括智能DNS,BGP网络,加速通道,全球设备分化中心,通过这些能力来支持全球就近接入。后面有专门一页来介绍这个全球就近接入。再上一层是指安全,上面写的高仿系统主要是用来防止DDOS的攻击。
负载均衡集群就是用来解决海量设备的接入,可以动态的随便扩展。通道安全是指TLS,DTLS,这种都是为了解决通道层面在数据上传的过程当中的数据安全问题,这是这一层。再上一层就是支持的协议种类,这部分就不具体介绍。最上面一层就是受到了稳定性保障,稳定性保障主要是分为几块。比如是通过隔离技术来保障稳定性,通过限流,降级能力来保证系统的稳定性,包括设计弱依赖,所有应用集群都是无单点这种问题来解决这种稳定性保障,稳定保障比较多,这里就列了几项,一个是隔离,一个是降级和限流。
再看一下接入层的架构设计,接入层的架构设计分成几块。第一块就是最左边的设备,有各种设备或者各种协议都有可能。中间这一层蓝色的部分包括设备揭接入,一些负载均衡的集群,DDOS的防御。后面是设备接入层,之后会对设备接入层针对这三个主要的能力全部进行讲解。后面就是标准协议层,这个设备接入层会把一些流量或者数据通过一些规则,路由到标准协议层,有不同的协议层来解析不同的协议。底层是网络和就近接入,这块内容到时会单独介绍。
首先来看这个接入层,接路层有三块核心的能力,一个是稳定性保障,接入层现在做的相对来说是比较薄的,就是核心的三个能力,一个就是并发建连。比如单机设备只能有1000KPS的来建TCP连接加TOS连接,主要做一些限流措施,更多的是防止很多设备都达到同一台ECS上面去把某台ECS的CPU打高,所以做了一些建连的限流。第二部分是连接的数量,就相当于单机四和八G,可能是蹭个二十万,三十万的TCP长连接,这个就相当于是防止,因为不做限连单击,可能连接数会非常多,导致机器的内存cpu耗光这种情况,主要做了一个有连接数量限流。
还有一个就是连接流量的限流,是指接入进来,比如现在物联网平台最多的可能就是MQTT的连接,通过MQTT连接上来,MQTT是个TCP长连接,那每个TCP长连接这个管道里每秒能发送的数据流量,像平台现在是256K,那主要是为了防止某一个单位设备流量太大。如果这个设备不做限制,那可能它发了100兆,但是单机的ECS可能也就100兆的流量处理能力会导致其他连接公平性会有损失,会导致其他数据不能处理,所以针对每个连接都做了一些流量的限制,就防止某个设备连接流量太大导致整一台机器上面的其它链接受影响。这是最基础的一个稳定性保障。
这个接入层的基本能力,它主要有一些比较简单的基础能力,一个是证书的卸载,还有证书的管理工作,还有智能路由。智能路由主要是指这个设备接上来,通过这个路由根据实力I D,帮你达到某一个集群里面去,后面的标准协议层,是可以分成很多个集群,就相当于通过智能路由的能力,把设备或者实力根据租户id分发到不同的集群里面去,这样可以保障各个集群的隔离。前面提到有一些集群隔离,就是不同的用户在不同的集群里面。第三部分来介绍这个高级能力,高级能力主要是在session转移之前,来讲解这个连接是怎么设计的。
比如设备通过MQT协议上来,建一个tcp长连接到设备接入层,在设备接入层再建一个tcp长连接到协议层,就是整条设备的一条tcp链路是独享的,不会说这条tcp连接上面有多个设备,每个设备都是独享tcp连接的。这个session转移是什么意思?session转移在协议层可能会发布,在平时发布时会在这个集群,比如在MQTT这个集群有1000台机器,其中一台机器要发布,那在发布之前会把这一台机器上面的所有设备,通过这个session转移的能力帮你转移到另外一台MQTT上面去。通过这种转移可以做到在标准协议这一层发布时,设备是不会出现TCP长连接断开的一个问题。
因为现在认为整个是一条TCP长链接,所以不会出现通过session转移来解决,就说协议层发布时的一些设备断开连接的问题,这就是session转移的意思。第二部分就是应用热更新,它指的是统一接入层这一块。在应用更新的时候,它自己本身可能也会更新。比如能力升级的时候,可能也会更新。更新是怎么做的?因为这个是tcp长连接设备是直接连在这个统一接入层的,如果是正常情况,发布时把这个应用程序关掉,那就相当于所有设备都会断开连接。应用热更新是什么意思?就是在发布时,不会直接将老设备连接全部断开,相当于两个进程会同时存在,老进程就不再接收新的设备的建连。
所有设备的建连都会连到新的进程里,老进程再过一段时间以后,慢慢的设备都下线了,就是设备根据自己的情况下线以后,在设备数量变少以后,这个程序才会在统一接入层将老的进程进行慢慢连接关掉,相对来说是非常平稳,很多设备用户基本上都是感知不到,因为会留很长一段时间让设备自己去慢慢的下线。这就是热更新的能力。用来解决的是接入层发布时候的导致的设备断开连接的问题,这两个能力合起来以后,session转移跟应用层热更新两个功能合起来以后,基本上就是设备的接入层发布不会导致设备的连接断开,或者会导致设备在发布的过程当中设备发不了消息,这种情况都不会出现。
第三个是负载均衡能力,是指统一接入层怎么把连接分配到后面的MQTT里面,这个就是在MQTT协议层集群里跟统一接入层之间,有一个流量的感知的功能,比如根据这个MQTT集群,每台机器的负载的情况来选择下次连接设备,比如这边受到设备连接以后通过这个负载捐献机制,应该往哪台MQTT连接,往负载小的一台机器上面去打,就是这个意思。这就是整个IOT接入层的一个架构,主要是核心三部分,一部分是设备,一部分就是在统一接入层的一些基本能力,还有一部分就是协议的能力。这个架构基本上就介绍到这里。