无脑翻译一篇物联网后端架构外文

入行有段时间了,一直想用大数据平台做物联网的后端支撑平台,但是一直是摸石头过河,现在有点想法,并与好多好友交流过,大伙也苦于没有指明灯,今看到这篇博文,甚是喜欢,依我笨搓的外语功底,冒昧的翻译一下。建议看官读原文(The Brain of an IoT System: Analytics Engines and Databases)。

无脑翻译一篇物联网后端架构外文_第1张图片

物联网系统的大脑:分析引擎和数据库(作者:Siddhartha Chatterjee 2015.10.1)

存在多种手段来构建这个“大脑神经系统”,而具体采用何种手段取决于用例。通常由运算速度、数据量、计算花销、数据特征等权衡。在这篇文章中,我们给出一个方案既能够满足实时查询场景同样能够满足非实时场景。

选择分析引擎和数据库

我们回顾一下前几篇博文中消息的架构。现在让我们展开这个架构,并添加分析引擎、存储、连接外部MQTT消息中间人等详细部分。

无脑翻译一篇物联网后端架构外文_第2张图片

物联网平台:MQTT 和 Apache Storm

数据从MQTT消息中间人处接受可能还需要进一步处理,比如:添加一个时间戳(如果其本身不具备的话),辨别是否漏读,筛选等。像Apache Pig这样的工具能够胜任。另外一个很好的选择就是Apache Storm,其不仅提供在小规模尺度下预处理能力同时它还是一个很好的分析系统。单个Apache Storm实例能够胜任这两个任务。对于一个大型的系统,可以考虑采用多个独立的实例。Apache Storm支持MQTT(借助于MQTT Sqout),这使整合更容易。

正如在别处提到的一样,在物联网系统中数据应该以多种样式存储以备历史备案和避免不必要的重复计算。除了直接将数据从MQTT客户端写入数据库,将它通过Storm再写入是另一条可选方式。Storm提供一种叫Bolt的机制,其被用于和各种数据库之间的连接。为了存储进来的原始数据和预处理数据,Cassandra or CouchDB(两款均出自Apache)可供选择。这些数据库同样可以存储分析结果和报告。通过Bolt提供对HDFS存储系统写的能力是一个不错的想法,这样在线下批量处理十分巨大的数据集时Hadoop能够被用上。和数据的结合增加了架构的复杂度但是在现实用例中提供更好的灵活性。

在Apache Storm中,bolts是最基本的处理单元同时将分布处理、复杂计算联系的更紧密。Blots可以使无状态的(对于监控单个事件)或者通过滑sliding windows,evnet correlations等为计算rolling metrics维护状态。Apache Storm提供实时分析的能力因此其非常适合物联网系统。它采用分布式架构并且可以不借助任何外部组件来维护分布式的消息(数据)。

另一个强劲的候选项是Apache Spark,其支持批处理模式并且提供近乎实时的分析能力。针对这二者的比较以超出本文范围。

在图表上,可视化的工具可以使用户自己的工具或者开源工具,比如JasperReports。同样,消息提醒和告警机制可以使第三方的email客户端和SMS服务。

伸缩扩展

如上的架构适合小型系统,但是对大型的系统不是很适合。另外,MQTT并没有提供任何缓存机制。所有这些特性是一个大型系统应具备的以便应对从多个不同的数据源涌入的大量数据。可以使用像RabbitMQ,Apache Kafka这样的消息中间件。在MQTT消息中间件和分析系统中间引入这样的中间件不仅能够提高系统性能,同时利于扩展。

下图展示的是通过Apache Kafka的增强解决方案

无脑翻译一篇物联网后端架构外文_第3张图片

物联网平台:MQTT,Apache Kafka,Storm

Apache Kafka已经具备和MQTT的无缝结合。Kafka将MQTT消息中间人传过来的数据分发给不同的Kafka消费者。例如:一个Kafka消费者能够将原始数据发往数据库,另一个Kafka消费者将数据抛给Storm分析。

总结

在building an IoT platform using open source components系列文章中,我们可以看到,在一个端到端的数据管道流中,常规的组合模块是哪些,它们之间是如何交流的以及它们如何协同工作以提供更大价值。同样,我们借助开源的组件模块,探索出一套物联网平台。这个模块的架构满足协同、伸缩、执行的特点,同时能够快速被采乃因为它针对多种多样的IoT用例提供了最基础的功能模块。The beauty of this open-source approach is that the integration of the individual components yields something much bigger than the sum of all components. After all, that is what IoT is all about!

你可能感兴趣的:(无脑翻译一篇物联网后端架构外文)