这是本人翻译storm的一篇英文文章,英文地址是http://storm-project.net/about/simple-api.html,如有纰漏,欢迎指正、或请参照原文,纯属个人爱好。
Storm提供了简单易用的API。当使用Storm编程时,只需要操纵转换tuple的流信息,一个tuple就是一个值的列表。tuple可以包含任何数据类型,当使用自定义数据类型时,我们只需要简单的使用storm的序列化器注册一下即可。
Storm提供了三种抽象的组件,他们分别是Spouts、Bolts和Topologies。Spouts组件在计算中负责接收或生产处理所需的数据源。通常spout从消息队列中读取数据,这些消息中间件可能是Kestrel、RabbitMQ或是Kafka,也可以从其他任何地方生产自己需要的数据源,比如调用Twitter streaming API。Spout可以与大部分的消息队列集成。
Bolts处理接收到的数据流,生产出新的数据流提供给其他组件调用,比如下一个bolt。大部分的计算逻辑都由bolt处理。比如函数处理、过滤器、流的处理甚至是数据库调用等等。
一个Topologie组件就是由多个spout和bolt组成的网络结构。网络中的每一个边线代表一个bolt组件订阅的数据流,这个数据流可能来至spout组件,也可能来至其他bolt组件。一个Topology组件就是复杂的流处理计算过程。Topology部署在服务器上就会一直运行,除非显示杀掉这个Topology进程。
Storm提供了一种本地运行模式,来模拟集群处理,这对开发和测试非常有用。客户端使用strom命令提交一个Topology到集群上运行。
Storm提供了一个简单的项目 storm-starter,这是学习如何开发Topology的很好的教程。如果想学习Storm的其他知识请阅读tutorial和documentation两份教程。