前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速认识实时计算系统 Storm

快速认识实时计算系统 Storm

作者头像
dys
发布2018-04-04 10:58:24
1.3K0
发布2018-04-04 10:58:24
举报
文章被收录于专栏:性能与架构

Storm是什么

Storm 是一个分布式数据流处理系统,用于大规模数据的实时处理。

例如用户在购物网站中会产生很多行为记录,如浏览、搜索感兴趣的商品,就可以使用Storm对这些行为记录进行实时分析处理,快速反馈给相关系统,如推荐系统。

工作原理

Storm 很像一个数据处理工厂,其中有多条流水线,流水线上有多个处理单元。

Storm 从外部对接数据源,然后发送到各条流水线,经过各个处理单元加工后交给客户。

举一个简单的例子,假设想用Storm来处理消息队列中的日志信息,处理的需求是:把有效日志存储到HDFS、把VIP用户的日志信息存入队列,那么实现的流程就是这样的:

Storm 接入外部的消息队列,作为内部的数据源头,处理单元 AB 订阅 源头 的数据,C 订阅 AD 订阅 B,这样就形成了两条流水线。

源头收到数据后,就发给 ABA 负责过滤掉无效的日志信息,把有效日志数据发送给 CC 收到后存储到HDFS

B 负责挑出VIP用户的日志信息,然后发送给 DD 收到后发送到另一个消息队列中,供其他系统使用。

各部分概念

Storm 中主要包括了两个类型的节点:源头处理单元源头 称为 spout(喷头),处理单元 称为 bolt(螺栓)。

spoutbolt 之间通过有向通道连接,通道内传输的是 tuple(元组)。

多个节点和有向边就构成了一个拓扑图 Topology:有向无环图

开发思路

通过上图可以看出,要开发一个完整的Storm任务就是构建出一个拓扑结构。

Topologyspoutbolt依赖关系 构成,那么就先编写 spout,定义好数据的来源,再编写各个 bolt,定义各自的处理逻辑,然后根据业务流程把他们关联起来,定义好 依赖关系,这样,拓扑结构就构造完成了,最后把 Topology交给 Storm 执行就可以了。

主要特点

Storm 具备分布式系统的基本特点:可扩展、高可靠、高性能,可以支持千数量级的物理节点,支持容错,提供ack/fail消息保证机制,在消息没有被正确传递时可以重发,内部通讯采用ZeroMQ,保证消息被快速处理。

Storm 还有一个显著特点,就是 编程简单,提供了简单的 Spout+Bolt 的编程模型,可以快速写出大规模数据的实时处理任务,而且有本地模式,开发人员可以方便的在本机运行调试,并支持多语言编程,如 JAVA、Python、C/C++。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Storm是什么
  • 工作原理
  • 各部分概念
  • 开发思路
  • 主要特点
相关产品与服务
消息队列 CMQ
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档