1 竞品选择
在这篇分析中,选择了以下几个IOT开放平台作为竞品:
阿里涂鸦 公司IOT平台主页选择萤石https://open.ys7.com/√阿里https://iot.aliyun.com/√腾讯https://iot.cloud.tencent.com/华为https://www.huaweicloud.com/intl/zh-cn/solution/iot/小米https://iot.mi.com/科大讯飞https://www.xfyun.cn/solution/IoT-developer-platform涂鸦https://www.tuya.com/cn/platform/clouddev/iot-core√大华https://open.cloud-dahua.com/EMQhttps://www.emqx.com/AWShttps://aws.amazon.com/cn/iot-core/Microsofthttps://azure.microsoft.com/zh-cn/solutions/iot2 功能对比
2.1 功能对比表格
-萤石阿里涂鸦消息广播√M2M通信√WebHook√√消息队列(消息订阅功能,接口拉取)√√数据流转√2.2 名词解释
名词解释消息广播向指定产品下的所有设备或订阅了特定Topic的所有设备发送消息M2M通信两端设备接入物联网平台后,设备间的连接和通信请求都由物联网平台承担,可以通过基于消息转发的M2M设备间通信或基于Topic消息路WebHook主要用于实时地将消息推送到指定的外部 URL。当特定的事件或条件满足时,系统将生成一个 HTTP 请求(通常是 POST 请求)并将其发送到预设的 URL消息队列将订阅的消息推送到消息队列中,用户的服务器监听队列接收设备消息数据流转数据流转可以对设备Topic数据进行处理,并将处理后的数据转发到其他设备Topic或其它云产品进行存储或处理2.3 消息队列功能对比
萤石:使用kafka,一个用户一个topic,提供接口供用户轮询拉取消息阿里:提供多种消息中间件供用户选择,用户直接订阅消息中间件拉取消息涂鸦:涂鸦开发者平台提供了消息队列服务来支持系统的各类实时消息的订阅和转发,例如订阅设备的实时日志数据,或实现系统之间的联动3 更多信息
3.1 萤石
3.1.1 概述萤石的IOT开放平台消息系统提供了两种消息订阅方式,消息推送和消息拉取:
消息推送服务是可靠的、海量的消息处理服务,将设备上报的到开放平台的通知消息主动推送给用户。此服务仅做数据透传,不支持对数据进行处理。消息拉取功能则需要开发者在消费组中创建消费者与消息通道建立连接。 3.1.2 产品优势 支持HTTP协议接入:消息通道支持HTTP协议接入,采用 RESTful 风格,易用,快速接入,跨网络能力强。性能指标卓越可靠:提供每秒30万推送处理能力,使用高可用分布式集群技术,有高吞吐能力、可避免消息堆积的问题,服务稳定。可靠重试策略:用户可自定义重试次数,不易产生漏传,有效提高推送抵达率。实时推送效果展示:实时统计推送的抵达、状态等数据口径,并将以上数据在管理台可视化地展现出来,助力实时监控推送效果。可视化调试工具快速排除故障:协助用户在集成阶段快速接入服务,在问题排查阶段精准定位问题点。 3.1.3 局限性 消息推送服务为异步推送,不保证消息的有序性。基于网络安全,不支持通过内网发送消息。消息通道仅透传数据,不支持对数据进行处理。 3.1.4 收费 个人版套餐仅支持每日前10台设备接收消息推送,超过的设备无法接收消息。企业版套餐免费提供消息推送服务。低延时、高可靠性消息为内测功能。3.2 阿里
3.2.1 通信方式概述阿里云物联网平台(IoT Platform)支持设备、物联网平台与服务器间通信,包括:
设备发送数据到物联网平台:设备可以通过自定义Topic发送自定义格式数据或利用物模型功能相关的Topic来发送标准化的物模型数据。物联网平台流转数据到服务器:物联网平台的规则引擎可以将设备上报消息、设备状态变化通知、设备生命周期变更、物模型历史数据上报、OTA升级状态通知、网关发现子设备上报、设备拓扑关系变更等消息流转到服务器。服务器远程控制设备:服务器可以使用物联网平台提供的云端SDK,调用云端API发送指令实现远程控制设备。可以通过自定义Topic或物模型完成远程控制。设备与设备之间通信:两端设备接入物联网平台后,设备间的连接和通信请求都由物联网平台承担,可以通过基于消息转发的M2M设备间通信或基于Topic消息路由的M2M设备间通信实现设备间通信。阿里云物联网平台以Topic为通信桥梁,在设备、物联网平台和服务器之间实现数据的传送和进一步的处理。
3.2.2 服务端订阅 3.2.2.1 使用场景 适用于只需要接收设备数据,并且在高并发场景下的服务端。可以接收产品下所有设备的订阅数据。 3.2.2.2 AMQP服务端订阅 AMQP,即高级消息队列协议,可以支持多消费组,方便排查问题,并且支持线性扩展。在消费者足够的情况下,可以实现消费能力的线性扩展以及优先推送实时消息。使用AMQP服务端订阅的用户需要在控制台配置AMQP服务端订阅,并开发AMQP客户端接入物联网平台接收消息。使用限制: 认证超时:建立连接后,如果15秒内没有认证成功,服务器会主动关闭连接。数据超时:服务端与物联网平台建立连接时,需传入心跳时间(范围30~300秒)。如果超过心跳时间,连接后无任何帧通信,物联网平台会关闭连接。ACK超时:物联网平台转发消息到客户端后,如果30秒内未收到客户端回执消息,计为ACK超时。优先实时消息推送,未推送成功放入堆积队列,堆积队列的消息通过重试策略再次推送。一个消费组最多可以堆积1亿条消息,保存时长为1天。实时消息推送限流:一个连接限流1,000 TPS,可以通过增加连接数(最大128)扩容。先堆积消息推送限流一个消费组限流200 TPS。一个产品可以关联的消费组数量最多10个,一个消费组可以关联的产品数量最多1,000个,一个消费组最多可以订阅200个Topic。 3.2.2.3 MNS服务端订阅 物联网平台将订阅的消息推送到轻量消息队列(原MNS)SMQ的队列中,用户的服务器MNS客户端监听MNS队列接收设备消息。使用消息服务订阅设备消息需要进行具体的配置。使用限制: MNS服务端订阅使用限制,详见MNS使用限制,主要涉及队列的创建、接收消息大小等。创建MNS服务端订阅后,无论是否有消息从物联网平台流转到队列中,MNS都会收取队列资源占用费。 3.2.2.4 收费无论使用AMQP或者MNS都会对消息推送的数量和创建的队列收取费用。
3.2.3 云产品流转 3.2.3.1 功能概述 云产品流转是阿里云物联网平台提供的服务,可以对设备Topic数据进行处理,并将处理后的数据转发到其他设备Topic或阿里云产品进行存储或处理。数据可以流转至多个目的地,包括但不限于其他设备的Topic,AMQP消费组,云原生数据库PolarDB,云数据库RDS,表格存储Tablestore,时序数据库TSDB,云原生多模数据库Lindorm,DataHub,消息队列RocketMQ,消息服务MNS,函数计算等。使用云产品流转功能,可以在无需购买服务器部署分布式架构的情况下,实现数据的采集,计算和存储的全栈服务。 3.2.3.2 使用限制 解析器的数量数据源的关联总数和包含的Topic总数数据目的的关联总数和包含的操作总数解析脚本的大小和执行流转函数的最大次数等。 3.2.4 数据压缩功能 3.2.4.1 功能概述这项功能将设备与物联网平台之间的数据进行压缩处理,旨在节省设备流量和提高传输速度。此功能基于设备与物联网平台间的通信Topic实现,物联网平台将完成通信Topic数据的压缩和解压缩,用户业务系统无需感知压缩过程。
3.2.4.2 使用限制 数据压缩功能仅支持尊享型和标准型企业版实例。仅支持通过MQTT协议接入的数据压缩。每个设备支持压缩或解压缩数据的Topic不超过20个,且Topic不支持通配符。压缩的数据格式为.gzip,压缩算法为deflate。压缩前的消息最大为1 MB。 3.2.5 广播通信 3.2.5.1 功能概述阿里云物联网平台支持向指定产品下的所有设备或订阅了特定Topic的所有设备发送消息。
3.2.5.2 广播方式 向全量在线设备广播: 业务服务器调用PubBroadcast接口,传入指定产品的ProductKey和MessageContent消息内容,产品的全量在线设备可通过广播Topic收到消息内容。向订阅了指定Topic的所有设备广播: 设备端订阅相同的广播Topic,业务服务器调用PubBroadcast接口,传入指定产品的ProductKey、MessageContent消息内容和要接收广播消息的Topic全称。 3.2.5.3 使用限制 广播消息仅推送给产品下当前在线的设备。指定在线设备广播时,需指定Topic订阅广播,广播接口最大调用频次:1次/秒。全量在线设备广播时,无需订阅广播Topic,广播接口最大调用频次:1次/分钟。广播消息体报文最大为64 KB。3.3 涂鸦
3.3.1 设备消息测试主要用于测试设备每日上报的数据量,可以提前确定设备消息使用量,及检测是否存在异常上报,从而避免不必要的资源费用。
3.3.2 设备消息上报统计 消息上报统计:设备在运行过程中,会根据功能需求,通过消息形式将设备状态上报到云端服务器。每种设备(例如温湿度传感器、智能宠物定位器、智能插座等)可能有其特定的上报需求和优化方案。过于频繁的数据上报会增加设备功耗,降低设备元器件的稳定性,因此需要进行适当的优化。查看消息上报统计:通过涂鸦开发者平台可以查看设备的上报消息统计。能够查看的数据包括按月的数据、超量产品总数、超量设备总数、超量消息总数等等。超量设备和超量产品:每个设备每天按照3500条消息限额进行统计,如果设备在当日消息量超过3500条,称为超量设备。如果产品下有设备超量,可以根据超量产品,定位该产品的功能需求和固件开发逻辑,并通过OTA升级来优化固件,这样能降低设备的消息量。 3.3.3 设备消息推送 设备消息推送:设备消息推送是产品的告知提醒,允许用户自定义产品的告警条件,实时监控产品状态,同时当某项功能的值超出常规状态时,可以第一时间将消息通知给用户,保障产品正常运行。设置设备消息推送:用户需要创建一个产品,然后设置推送规则:用户可以自定义触发条件,包括通用类型的触发条件或功能点触发条件;设备消息推送等级分为通知、轻微、严重三种;消息推送方式有消息中心、应用推送及消息推送以及LINE推送等;也可设定推送目标,以及是否支持延迟推送等。高级版本设备消息推送:涂鸦开发者平台高级版本提供了多功能点组合判断和多条件组以及延迟推送等功能,需要付费才能使用。 3.3.4 消息队列 消息队列: 涂鸦开发者平台提供了消息队列服务来支持系统的各类实时消息的订阅和转发,例如订阅设备的实时日志数据,或实现系统之间的联动。工作原理: 消息队列通过 Pulsar 主动推送各种已订阅的事件数据,以满足对消息实时和持久化的需求。Pulsar 是一款由 Apache 软件基金会管理的、支持多租户、高性能的服务器到服务器消息通讯解决方案。涂鸦消息队列基于开源的 Pulsar 系统进行了深度定制改进。Pub/Sub模式: 消息队列作为消息代理,采用的是发布/订阅设计模式。生产者将消息发布到主题,消费者可以订阅这些主题并处理传入消息,处理完成时发送确认。消息队列为每个主题都分配了多个分区,根据分区向消费者分发消息。消息流程: 开发者需要先开通消息订阅,然后进行消息测试,接入消息订阅,最后进行具体业务的开发。消息安全性: 认证安全方面,消息队列针对身份认证进行了深度优化,增强了安全性,用户可以使用基于云的SDK进行认证。数据安全方面,消息队列使用 SSL 保障数据传输安全,采用AES-128加密数据,所有请求都附带签名。 3.3.5 收费 物联网云服务价格:涂鸦开发者平台提供的最基础服务是 IoT Core 连接服务,用户订阅后可获得 API 调用和消息推送的基础资源包。此服务的详细介绍和价格可在商品详情页查看。此服务的版本有免费体验版、旗舰版和行业版,并包含各自的基础资源包(如API调用次数、设备数等)。其他云服务:除了 IoT Core 连接服务,涂鸦还提供其他物联网云服务,如天气服务,实时音视频等。这些服务或免费调用,或需额外购买服务。计费示例:以旗舰版为例,对于不同的API调用和消息订阅数,其总费用不同。若总费用超过了套餐内额度,将需要额外支付。基础资源包:基础资源包提供基本的 API 调用和消息订阅额度,随 IoT Core 连接服务订阅获得,额度每月定时刷新且不结余,超过额度部分需要额外付费。4 总结
萤石的开放平台消息系统主要侧重在消息推送和拉取两种方式,兼顾了用户的便利性和系统的灵活性。萤石的消息系统支持HTTP协议接入,并具有高达每秒30万个的推送处理能力,保证了系统的稳定性和可靠性。萤石的消息业务是不收费的。阿里云物联网平台提供了设备发送数据到平台,流转数据到服务器,服务器远程控制设备,设备与设备之间通信等多种通信方式,几乎覆盖了物联网设备间的所有通信需求。阿里云会对消息推送的数量和队列建立收取费用。涂鸦的开放平台则在设备消息测试和统计方面有一定的优势,有助于用户提前发现和解决问题,实现更有效的资源使用。而且,涂鸦的设备消息推送和消息队列功能也保证了数据的实时性和安全性。在价格方面,涂鸦提供了多种云服务,包括免费和付费的选项,充分满足了用户的多种需求。萤石开放平台的消息拉取功能,采用用户轮询接口的方式拉取消息,且开通形式为内部开通(在开放平台控制台上不开放),然而很多用户是需要消息拉取的消息获取方式的,所以这一块应该要好好完善一下,提供更多方式供用户选择。