阿里云物联网平台入门训练营:课时1:IoT设备接入基础(二)
课时1:IoT设备接入基础(二)
接入基础能力
下图右边就是针对左边的能力的一些基础实现,比如说像交警记录我们其实就相当于提供了八个。
包括一些基础的能力,包括region智能路由BGP网络,加速通道,全球化数据中心,中间通道这些能力来支持一个全球就近记录。在后面有专门一页来讲这个全球就近记录。
第二层是指安全,包括上面写的一些是高防系统。高防系统主要是用来防止一些DDAS的一些攻击。负载均衡,就是用来解决海量设备的负载的一些记录,就是说可以动态的随便扩展。这些通道安全是指比如说DTS,x509这种都是为了解决这个通道层面在数据上传的过程当中的数据安全问题。
第三层就是我们支持协议的一些种类,这就不具体讲了。
第四层稳定性保障,稳定性保障的话主要是分为几块。第一块通过一些隔离的技术来保障稳定性,包括通过一些限流,降级,包括一些能力来保证我们系统的稳定性,包括是涉及若依赖,所有集群,所有应用话都无单点这种问题来解决这个稳定性保障。稳定性保障问题的保障问题比较多。这里就列了几项,一个主要是降级,隔离,降级和限流。
然后再看一下接入层的一个架构设计。接入层的架构设计,分成几块,第一块的话,这个最左边那就设备就不说了,是各种设备都或者各种协议都有可能。中间这一层,对这一块蓝色的这块包括设备记录,包括负载均衡的集权,包括迪达斯的防御,这是第一层。
后面是设备接入层,设备接入层会针对这三个主要的能力全部讲解一下。然后后面就是标准协议层,就说这个设备接入层的话会把一些流量或者数据通过一些规则录由到标准协议层,由不同的协议层来解析不同的协议。然后这个底层的话是网络和就近接入这块,这块到时候单独就近接入会单独讲。
lOT接入架构
首先我们来看一下下图这个接入层,接入层有三块核心的一个核心能力。
稳定性保障
第一部分是稳定性保障,稳定性保障其实接入层现在做的相对来说是比较薄的,就是核心的三个能力。
一个是并发建联,并发建联就比如说我单机,同时设备比如说是只能有1000 TPS的来建TCP连接加TOS连接,就是用来防治,主要也是做一些限流措施,更多是防止很多设备都达到同一台ECS上面去把这台ECS拉高,所以做了一些限流。
第二部分是连接的一个数量,然后连接的数量更多的是为了就相当于单机,单机比如说四核8G,比如说称了20万30万的TCP长连接,那这个就相当于是防止你不做限连,可能单机连接数会非常多,导致机器的内存CPU耗光这种情况,主要做了一个连接数量性还有一个就是连接流量的限流,就是指你接入进来。
我们现在互联网平台最多的可能就是MQ77的一个链接,然后通过MQ77的连接建立上来。MQ77是个TCP长连接,那每个TCP长连接管道里面每秒能发送的数据的一个流量。
比如说像我们平台现在是256k,主要是为了防止什么某一个单个设备流量太大,这个设备假如说我不做限制,那可能他发了100M,但是我单机的ECS可能也就100M的一个流量处理能力会导致其他连接这个公平性会有损失,会导致其他数据不能处理,所以说针对每个连接做了一些流量的限制,就防止一些某个设备连接流量太大,导致整台机器上面的其他连接受影响。这是最基础的一个稳定性保障。
基本能力
第二部分是接入层的一个基本能力,他有一些主要做的比较简单。一个是TLS的卸载,还有一些证书的管理工作,还有智能路由主要是指这个设备你接上来我通过这个路由,根据你的实力ID帮你打到某一个集群里面去。
后面标准协议层其实是可以分成很多个集群,就相当我通过智能路由的能力把你的设备或者实力或者是根据你的租户ID给你分发到不同的集群里面去,这样可以保证各个集群的一些一些隔离,刚才我前面提到有一些我们有一些集群隔离,就说不同用户在不同的集群里面。
高阶能力
第三部分说一下这个高阶能力。第一是Session转移,先说一下我们这个链接是怎么设计。
比如说你设备通过MQTT上来,建个TCP长连接到我们的设备接入层,我们会在设备接入层再建一个TCP长连接到协议层,就是整条设备的一条TCP链路你是独享的不会说TCP被占用。比如说我从接入层到协议层不会说这条TCP连接上面有多个设备,每个设备都是独享TCP连接的。
Session意思是假如说我们协议层可能会发布,比如说在平时发布的时候我们会在这个MQTT集群我有1000台机器,我其中一台机器要发布了,那我在发布之前会把这台机器上面的所有设备通过这个session转移的能力帮你转移到另外一台MQTT上面去。
通过这种转移我们可以做到在标准协议这一层发布的时候,设备是不会出现TCP长连接断开的一个问题,因为现在是一整条TCP长链接,所以说不会出现通过Session转移来解决我们的协议层发布的时候的一些设备断开连接的一些问题,这就是Session转移的意思。
第二部分就说是应用热更新,应用热更新其实指的是统一接入层这一块。就是说在应用更新的时候,他自己本身可能有时候也会更新,有时候能力升级的时候,可能也会更新一下,因为这个是TCP长连接设备是直接都连在这个统一接入层,如果是正常情况,假如说你发布的时候,你把这个接入层把应用程序关掉,那就相当于所有设备都会断开连接。
我们做的这个应用热更新的就是说我在发布的时候,我不会把老链接就是直接把你的设备连接全部断开,而是相当于两个进程会同时存在,然后老进程就相当于是不再接收新的设备的界面,然后所有设备的界面都会连到新的进程里面去,然后老进程再过一段时间以后,就会慢慢的设备都下线了,自动设备根据自己的情况下线以后,在设备数量比较少了以后,然后这个程序才会统一接入层会把老的进程慢慢的慢慢的连接关掉,就是相对来说是非常平稳。
可能用户的话基本上很多设备都是感受不到,因为我们会留很长一段时间让设备自己去慢慢的下线。这个就是我们做的热更新的能力,就像在用来解决的是接入层发布时候导致的一个设备断开连接的问题。其实这两个能力合起来有合起来以后Session转移跟应用程序连接二更新,两个功能合起来以后基本上就说设备的记录层发布不会导致设备的连接断开,或者会导致设备在我们发布的过程当中设备发不了消息,这种都不会出现。
第三个部分是个负载均衡能力是指统一接入层怎么把连接分配到后面的MQTT里面,这个就是我们在MQTT这边的协议层的一个集群里面跟同一接入程之间他有一个流量的感知功能,会根据MQTT集全每台机器的负载的情况来选择我下次这边收到设备连接以后,通过这个负载均衡机制,我应该往MQTT的负载小的那个一台机器上面去打,其实就这个意思。
上图这个就是我们整个loT记录层的一个架构,其实主要是三部分,一部分在这里,一部分就是在统一接入层的一些基本能力,还有一部分就是协议的一个能力。