物联网平台规则引擎流转到 S3 对比
0 对于物联网平台来说,规则引擎是其中一个很重要的功能,也叫消息流转功能,将消息流转到各类中间件、云产品中。在华为、AWS、Azure、阿里这四个物联网平台中,阿里不支持流转到 S3/类 S3 存储中。本文对比一下华为云、AWS、Azure 把设备消息流转到 S3/类 S3 存储的功能
参考资料
https://docs.amazonaws.cn/general/latest/gr/iot-core.html#limits_iot
华为云
规则粒度和限制
规则配置粒度到 OBS 桶
限制单用户配置 100 条规则,每个规则 10 个 Action
功能实现
针对华为云,我测试了设备的消息上报转发到华为云 OBS 的功能。
流转规则需要指定 obs 桶,随后运行之后,华为云 OBS 体现为
设备的每条消息都会在 obs 中存储为一个文件
名称采用 deviceId+毫秒级时间戳+后面 4 位数字
关键路径截图
配置规则时指定到 obs 桶

单条消息单个文件

优势
可以非常轻易地查询出单个设备的消息,因为文件名携带有毫秒级时间戳,还可以指定具体
劣势
用来做 MapReduce 的话,文件数目太多,由于 S3 云厂商往往通过 API 调用次数收费,不仅是速度,成本也会很高。
AWS
规则粒度和限制
规则配置粒度到桶及 Key,相当于华为云 OBS 桶+文件名
限制规则每秒进行 20k 次运算
限制最多拥有 1000 条规则
限制每个规则最多 10 个 action
功能实现
再次上报数据触发规则会把 obs 中的数据替换。(通过版本控制可以获取到老的数据)
关键路径截图
配置规则指定粒度到 Key

仅有一个 Key,新值覆盖旧值

优劣势
AWS 的这个模式很适合存储每个设备的最新数据。不过由于规则数量上的限制,最多只能在 S3 上存储 1000 个键值对。可用性较低。可用于数量小于 1000 的设备,存储、查询最新数据。
Azure 转发
规则粒度限制
规则配置粒度到存储容器
Azure 可配置存储入存储容器的批量频率和大小限制
编码支持 Avro 和 Json 两种格式
最多 100 条路由
功能实现
自上报事件,到存储中出现数据,azure 是最慢的,azure 做了批量的缓冲,达到 batch 的大小和时间要求后才会写入存储。
关键路径截图
配置路由规则

存储中批量数据
因为选择了 avro 格式,所以 vim 打开是乱码,不过明显可以看到是多条数据

优势
Azure 的这种方式,比较适合做 MapReduce 类操作,相对华为云来说,Azure 的文件数量大大减少,如果用于做 MapReduce 这类操作,因为文件碎片小,作业速度会比华为云快,而且由于云厂商对存储,通常以 api 调用次数收费,价格也会比华为云低。
劣势
不易针对单个设备进行查询。
版权声明: 本文为 InfoQ 作者【张俭】的原创文章。
原文链接:【http://xie.infoq.cn/article/db4540aeebb062d1c38f2bf78】。文章转载请联系作者。
评论