storm的功能
Storm 有许多应用领域:实时分析、在线机器学习、持续计算、分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务)、 ETL(Extraction-Transformation-Loading 的缩写,即数据抽取、转换和加载)等。下面介绍 Storm 的三大主要应用。
(1)信息流处理( stream processing)
Storm 可用来实时处理新数据和更新数据库,兼具容错性和可扩展性,即 Storm 可以用来处理源源不断流进来的消息,处理之后将结果写入某个存储中。
(2)持续计算( continuous computation)
Storm 可进行连续查询并把结果即时反馈给客户端,如把 Twitter 上的热门话题发送到浏览器中。
(3)分布式远程程序调用( distributed RPC)
Storm 可用来并行处理密集查询。 Storm 的拓扑结构是一个等待调用信息的分布函数,当它收到一条调用信息后,会对查询进行计算,并返回查询结果。例如,分布式 RPC 可以做并行搜索或者处理大集合的数据,通过配置 DRPC 服务器,将 Storm 的 Topology 发布为 DRPC 服务。客户端程序可以调用 DRPC 服务将数据发送到 Storm 集群中,并接收处理结果的反馈。这种方式需要 DRPC 服务器转发,其中 DRPC 服务器底层通过 Thrift 实现。适合的业务场景主要是实时计算,且扩展性良好,可以增加每个节点的 Worker 数量来动态扩展。本书将针对这些应用场景,介绍广告实时计算系统、语音“实时墙”等多个案例,这些案例是从不同领域、不同行业角度的总结分析。但是万变不离其宗,目的是参考以上 Storm的三大应用,将 Storm 切实应用到行业生产中。
Storm 绝对是一个相当“有内涵”的系统,能把那么复杂的事情抽象得很完美,能把数学用到极致,这是笔者使用 Storm 实现消息确保被执行一次之后最直接的感觉。
例如互联网方向的实时推荐,海量的用户、数据,且需要实时的推荐算法计算,该如何实现?有了 Storm, Spout 从数据源取得数据, Bolt 可以合并,也可以切分数据,最终完成整个业务逻辑处理并输出结果。分分合合,就像河水从曲曲折折的河道一直流向大海一样,所以也称这种数据处理方式为流式计算。