阿里云物联网平台入门训练营:课时1:IoT设备接入基础(六)
课时1:IoT设备接入基础(六)
第六种:云云对接
云云对接的话主要是为了解决平台不支持的协议,我们平台只支持MQTT,coap, HTPP。
那么他在这些协议都不是的情况下,比如说我设备是Modbus ,JT780 协议,那我怎么上物联网平台,那就是通过就是这些设备先连接到用户自建的业务服务器里面,然后在自建的业务服务器里面。
通过我们泛化SDK,我们提供SDK做转换,转换以后再由泛化SDK连接到我们阿里云ROT平台上面去。这就是云云对接主要是为了解决那种阿里云不支持的协议接入。
设备接入-大型工业网关
网关其实是代理子设备上线,网关的话其实有两个痛点。
第一个痛点:这里讲的主要是大型工业网关,在一些工业场景下面,这个网关下面可能子设备可能挂了几千的,或者挂了上万的都有可能就说一个网关下面挂几千个设备,几万个设备,这种情况下那你网关怎么去代理这个几千个设备或者几万个设备的数据的快速的上云一个能力。
我们现有的大型网关有两个痛点,一个是就是大型数据上云的话是很难上的,然后第二个就是怎么去解决一个快速登录问题,因为你一旦子设备多了,刚刚提到子设备是通过PAPE消息来上云,那你就相当于比如说一万个设备,那我得发一万个PAPE消息才能上云。
所以说针对这种子设备的一些上云的话,怎么来解决,怎么快速解决。我们来看一下下图的架构,首先这边这边最左边的话就相当于是一个子设备,可能子设备可能要上万个一个大型网关,我们现在的网关每个网关其实只能建一条连接。
假如说上万一个子设备数据我要同时发数据,那一个tcp连接,因为你一条tcp连接只能接入到一个接入网关里面,那你接入到一个接入网关的话,那会对这个子设备接入网关可能会就会形成瓶颈。
比如说你下面一万个子设备同时发一条消息,那对这个接入网关来说就是一万个PPS,那你这个接入网关里面光是一条链接就要支持1万PPS那肯定是比较难的。你光是接入网关就不能做其他事情了,就是接入网关它也可以有多条连接。比如说我可以接入网关,我可以连通过我们的SDK我可以连一百个接入网关,那就相当于我把这个数据打散到一百台机器上面去,就相当于把这个大数据打散,然后打散就是采用的是网关这边支持多个连接,就像一个网关我可以同一个身份,在不同的接入服务器上面。
比如说我同一身份同一网关,我接入到一百台接入服器上面去,那这样的话就相当于把流量就相当于打散了1/100可以。相当于可以对接入层的话就不会有什么压力,然后对网关的单个通道,因为他有一百个通道来发数据就相当于也不会有什么压力。
本来一个通道,我们单个tcp通道是有限流的如果单个tcp的流量在这种场景下面肯定不能用,然后我们就是有一个策略通过一个多连接来解释这个问题。
第二个痛点:我们会针对这些网关数据做一些批量的一些聚合,然后聚合以后对一些数据去做一些压缩,能减少带宽,比如说在上传过程当中的一些带宽,这个是说的是第一个问题,就是大数据上云的问题。还有一个是是快速登录的问题,就是你这个网关比如说你一千个设备或者你支持五十万个设备。
五十万个设备,比如说你同时掉线,那你要同时上来的话,不管什么原因,如果这个tcp连接断开了,那导致所有五十万设备要重新连一次,那其实可能是要耗很长的一段时间,包括对网关资源,就相当你在连接过程当中可能还不能发消息,对整个系统的话压力是非常大的。首先我们对设备做了一些分离,就是说我们支持一万个有状态的设备,百万个无状态的设备。是一万个有状态的设备,就是网关跟接入层连接断开以后,下次再连接之后我是要马上感知到的,或者你断开之后我后面的数据库就要更新,就要把一万个设备设置成子设备,在这种场景下面子设备是有状态的。
就只你的网关下面就相当于你一万个设备下面我们是支持有状态的,因为就相当于1万的设备下线,比如说网关下线,我们就会把一万个设备制成一线。
如果你网关连上以后我们就可以让网关设备快速上线。就是说通过批量登录,我可以让子设备快速的登录。然后一般网关登录的话也分为两个步骤,首先先你要加一个top结构,top结构加完之后你网关再来登录。我们也在协议上面做了优化就是网关top结构和登录可以合并在一起。就相当于由服务端把top和登录两个事情一起做了而你的,子设备只需要发一条信息就可以了,这种事针对1万个有设备。
因为也会有一些场景,就是工业上面他其实对设备,比如说我这个代替网关上面,我下面挂了一百万万的子设备,网关如果断开的时候,其实我不想要全部再重新登陆一遍,可能是我网关断开的时候拔了一下电。我下次希望的是我下一次再登陆网关的时候,网关能快速的维持着这个状态,这种也是一种业务产业。
针对这种对下面的一些子设备,我掉不掉线感知也不是很强烈的一种场景,就可以用这种百万设备无状态,它的好处在我在网关建立连接的时候,我不需要再重新登录设备,那不需要再重新登录设备,那肯定是相当于网关是非常快。但是它也可能会有问题,就是你这个状态就是不一致的,就是你子设备可能是某个子设备下线以后,那需要你等下次登录以后你主动的感知到以后你来告诉平台,这个设备下线,那我们会给你这个设备下线,不然的话你这个设备可能永远就是在线状态。就是说各个优势,缺点的话还是比较明显的这两个。
然后下图右侧的话,这个大型网关能力的话,我们差不多是在九月份会上线,然后主要的好处的话就是刚才说的解决两个,一个是大数据上面还有一个就是分钟级的子设备的快速登陆的移动一个问题,就是万级设备的话我们基本上只要分钟级别就能全部上线。
设备接入层-稳定性保障
接下来说一下网关一个接入层的一个稳定性保障,接入层的稳定性保是有时候虽然我们IoT平台比如说有多个集群,比如说我这边有这个集群架构,有集群一,集群二,集群三,但是某个情况下,如果这个集群因为别人的业务影响的情况下,可能会出现这个集群出现问题了。就是说我们现在的话,整个架构分成三块,这边设备,设备就比如说你买的实例,那我们就会有一个实例命名,然后实例命名会转到中间那一个实例命名上面去,然后这边有一个中心化的部署中心化的一个一个可以认为是统一接入层,就是做一些路由的,他把不同的实例路由到不同的集群里面去,然后在某个集群。
比如说你在集群一出问题的情况下,那我就有就可以由这边的统一接入层我把你这个实力全部调到集群二里面去,那这样的话就来保证你快速的一个融资能力。就是说你不需要等着集群一恢复,你设备才能使用,就相当于你可以快速的切到集群二里面去,这是一个能力。
然后我刚才说的是后面的是ROT平台多集群的这个挂掉,比如说ROT平台的隔离集群都挂掉,假如说是统一中心化的布置接入层挂掉,统一接入层集群,我们有多个集群,假如说你这个集群一挂掉了,那我就可以再通过中间域名,比如说我本来这个实例是指到集群一的,但我可以把中间域名把IP直接改成到集群二,那就相当于是这个流量也能过来。
但是这个的话跟刚才的内部调用的话,区别的话是在这个可能会因为你该域名的话就会有一个延期,就说时间上面会相对来说会慢一点,但是这个中心化集群因为接入路由层基本上没什么业务,它其实是类似于做了一个网络代理层相对来说稳定性会可靠很多,因为我们的基本上平台都是有变更导致的,而统一接入层这一块的话,相对来说变更会非常少,首先它变更少,第二就是说它的功能比较简单,所以说相对来说这个中心化部署的统一接入层稳定性是非常高的。
同时他又有多个集群,所以说相对稳定性还好,然后这边的话有稳定性的时候,我们又通过统一接入层的一些实例,用户维度的路由能力或者整个集群的调度能力,把这个集群实力直接调到另外一个集群下面去,所以通过这样来保证我们的一个设备的一个稳定。
这个其实就是我们现在最近推出了一个高层优势力。就是说针对后面的这个集群如果挂掉的情况下,那我们可以在一分钟内把你比如说你的设备有100万在集群一里面,我们可以在一分钟内把你这个设备全部调到集群二里面去,而且在这个调度的过程当中,你设备这一侧是不会感知掉线的,这个就是我们在容灾切换的时候又利用了那个session转移的能力,就是通过session转移来把集群一的流量全部迁移到集群二或者集群三里面去。这个就是最近推出的一个最核心的一个稳定性的一个核心保障能力。