《物联网分布式接入服务》

先吐槽一下,一开始看了ppt,觉得很高大上,但后面听了演讲后,基本就是读ppt,真是一口老血=。=

IoT的挑战

规模上物联网设备将会达到数百亿级别,包括可穿戴设备,家庭智能设备,工业网关等。存储上面对海量的存储,需要使用分布式的时序数据库。协议上看,需要有注重安全,个人隐私,防止攻击,数据安全的协议。

百度的物联网平台解决方案

《物联网分布式接入服务》_第1张图片
屏幕快照 2017-09-23 下午3.19.23.png

用户通过终端SDK接入,使用MQTT协议。数据储存使用对象存储,NoSQL,关系型DB和时序数据库。对行业服务,提供物解析,预测性维保和嵌入式可视化报表等。所谓物解析(IoT Parser),就是简单快速完成各种设备数据协议解析。

《物联网分布式接入服务》_第2张图片
屏幕快照 2017-09-23 下午3.33.36.png

用户通过工业网关或者设备终端,接入MQTT服务。MQTT服务依赖其服务,HBase做数据的存储,Redis做数据的缓存,ZooKeeper做broker之间数据的协调。用户可以用Rule Engine来自定义一些数据服务,只需使用sql语句就可操作。之后,数据通过Kafka,对数据做流处理和批处理,最后对过滤后的数据进行存储(使用NoSQL,MySql,DFS,TSDB)。

协议的选择

百度选择使用MQTT协议。CoAP,使用基于UDP,因而反控性能较差。XMPP和HTTP都是比较重的协议,数据量较大。
MQTT有如下特点:

  1. 使用心跳维持连接
    可以用来检测client和server之间的连接状态,同时还可以维护NAT地址映射表
  2. 遗愿信息功能
    指定当client和server之间失去连接之后,server需要往指定的topic发送特定QoS的级别的消息
  3. 能保留消息
    一个特定主题的消息会保留到服务器,当任何一个client订阅了这个主题,都会首先收到这个消息。
  4. 持久化订阅

    当client和server之间断开连接之后,所有发往这个主题的消息都会保留下来,等client重新连接之后,会重新发给该client
    《物联网分布式接入服务》_第3张图片
    屏幕快照 2017-09-23 下午3.41.02.png

    目开源的MQTT服务,主要是单机版的MQTT服务,Mosquitto,Moquette,Apollo,RabbitMQ。

物联网场景下的数据一致性

如果所有client发送的数据需要全局一致性,那么必然会需要一个broker来担当master,为每一个消息分配一个id,那么这个Broker会成为一个hotspot,而且系统不具有扩展性。在百度的应用场景中,并没有保证多个client的全局消息一致性。只支持同一个client消息的有序性,通过消息的到达时间来决定其顺序。

MQTT协议的局限性及解决方法

在消息数量级很大时,消息订阅者在一条连接上,会消费所有数据,这是不合理的。


《物联网分布式接入服务》_第4张图片
屏幕快照 2017-09-23 下午4.06.41.png

百度使用Kafka,先对消息做分区处理,根据用户提供不同的key,将不同的key的消息存放到不同的分区。在后面的Consumer Group对消息进行消费。

你可能感兴趣的:(《物联网分布式接入服务》)