针对碎片化的接入问题,通过不同的接入方式来适配不同的设备场景。
直连设备:对于广域网的设备,通过直连的方式直接上云。
局域网设备:通过不同的局域网协议接入边缘网关,由边缘网关转换协议,然后做数据处理,再通过 MQTT协议接入物联网平台。
LoRa设备:先接入LoRa网关,然后由LoRa网关通过MQTT协议接入阿里云物联网平台。
NB-IoT设备:阿里云物联网平台支持移动、联通和电信NB设备接入。移动和联通可直接接入,电信支持 两种接入方式。第一种通过Host/IP白名单接入阿里云物联网平台,第二种通过阿里云物联网平台提供的云云 对接的方式,先对接电信平台,然后把设备接入到阿里云物联网平台。
私有平台的设备:通过泛化接入的方式,把私有协议转成标准的MQTT协议,然后接入到阿里云物联网平 台。
通道复用:对于边缘网关,其下的子设备可以通过复用网关的物理连接方式上线和消息上下行通信,这 类子设备与直连设备的能力对等。
云网关: 针对采用了标准MQTT协议的设备,但自定义了设备身份信息和消息通信Topic的设备,通过云 网关接入方式解决身份和Topic的标准化。采用JT/T808、GB/T32960协议的车载设备,通过云网关解决认证、 身份和设备通信问题。
连接限流能力
从外部请求限流和内部资源限流两个维度设计的接入层限流。针对外部限流,有并发建连限流、单连接流量限 流、背压机制(结合业务层消费能力和TCP滑动窗口机制来实现)和节流机制(溢出包丢弃)。针对内部资源限流,限制单进程、单应用的TCP Session数量,针对TCP缓存的内存限制,针对单应用的CPU使用限制。通过内、 外资源的限流策略来防止连接层的雪崩,同时减少对下游系统的冲击。
应用热更新能力
在网络代理发布时,会导致设备的TCP长连接断开,对于设备而言,需要重建连接,同时在建连的过程中消息不 能到达。对于长连接断开,阿里云物联网平台支持了平滑迁移和缓慢下线的能力。通过老进程关闭listen fd, 新进程接管listen fd,老进程维持24小时,让设备重连后自动迁移到新进程。对于长时间不重连的设备,通过 缓慢下线的策略逐步使设备下线重连,减少同时大量设备下线对用户业务的影响。通过上述两个策略配合使用 ,可减少网络代理发布时对设备连接的影响。
Session转移
网络代理层跟协议层之间采用了TCP长连接,在协议层发布时会导致TCP长连接断开,在协议层保存了本地
Session信息,如果当前发布机器的Session信息丢失,连接断开后需要设备重连才能恢复。针对上述情况,阿 里云物联网平台设计了Session转移功能,在协议层发布时,可以把TCP长连接和设备的Session信息转移到其他 未发布的机器上,此时协议层的发布可以做到对设备无感。
快速容灾
为了解决单故障导致的全平台问题,阿里云物联网平台针对协议层、消息层部署了多个集群,同时会把不同的
用户放到不同的集群里,当某个集群的协议层或者消息层出现系统异常时,网络代理层可以通过路由能力和 Session转移能力把设备的连接转移到不同的集群,从而保障单集群故障能快速恢复。
设备连接的安全性
IoT平台基于四层安全设计和离线安全分析结合来保障设备的安全性。
安全防御层
借助阿里云的DDoS、高防等能力,防止SYN洪水攻击等,做到流量的有效清洗,可以防止1000Gbps以上的流量攻击。
通道安全层
通过实现TLS、DTLS,X.509,ID2等安全加密技术,实现传输层的加密,防止数据在传输过程中 被篡改、伪造等,同时针对低功耗设备,提供PSK、SessionTicket 等能力,解决TLS过程中的数 据传输量和网络RT的问题。
身份安全
支持三种类型的设备身份,不同IoT场景可以使用不同的身份,保障每个设备都有唯一身份,同时对设备认证做了加签,防止身份的伪造。
数据安全
按单元隔离不同集合的用户,然后再按用户维度和实例维度做更小粒度地隔离,保障数据在实例内、用户内、单元内闭环,做到每个用户只能看到自己的数据。
离线数据分析
利用设备行为数据结合平台的AI能力,分析每个设备的安全性,针对安全等级低的设备做预警,并且结合平台安全层,针对攻击类设备实现自动拦截的能力。
物联网平台消息队列采用连接、计算、存储分离的架构。接入节点包括MQTT接入节点和AMQP接入节点,支持千万设备 长连接。计算节点是无状态的Broker,负责消息分发。存储节点负责存储会话、订阅关系和消息队列。
在这种架构下,各个节点职责清晰,可分别支持水平扩展。节点之间通过高性能NIO网络框架进行通信,并采用RDMA技 术进行网络加速。通过以上连接、计算、存储分离的架构,做到了高性能、高可用,架构具有良好的弹性。
传统消息队列,其存储引擎简单来说是一种Queue引擎,在Topic数量变多时会产生大量的随机读写,严重影响性能。针对传统MQ的问题,结合IoT场景的业务特性,物联网平台升级了存储引擎,在Queue引擎的基础之上,自研了K-V引擎 ,支持海量Topic存储,同时支持海量会话和订阅关系的存储。
高可用设计
高可用架构
1) 接入节点高可用
2) 计算节点高可用
3) 存储节点高可用
消息高可用
1) 容灾
目前消息的容灾主要包括消息存储容灾、订阅关系容灾、消息推送容灾。
-
消息存储容灾:在存储引擎出现故障时,消息存储会不断重试,确保消息最终存储成功。
-
订阅关系容灾:消息推送的第一步就是查询订阅关系,如果存储引擎出现故障,Broker内部会发起重试,确保推送流程最终能正常走下去。
-
消息推送容灾:消息推送给消费者时,如果消费者出现异常,云端同样会发起重试,确保最终的消 息推送成功。
2) 用户隔离
用户隔离是IoT消息流转高可用建设核心的架构优化。针对不同用户的SQL脚本、规则的复杂度等特性,用户隔离引擎能动态感知各用户规则计算的资源消耗,从而动态调整计算资源,保障负载均衡。
用户隔离引擎主要包括调度中心和状态中心。调度中心实时监听服务节点的状态,做流量统计,然后根据 动态的一致性Hash算法做资源分配。状态中心则实时收集每个服务节点的状态,提供给调度中心做决策。最终调度中心决策出最优IP,指定IP调用。
全球化
近年来,中国企业在海外的市场机会越来越大,对海外数据合规的要求也越来越严格,也对设备连接速度和数据上云效率 提出了更高要求。随着全球化的发展和物联网技术的普及,物联网平台全球化的业务支撑变得越来越重要。 |