千家信息网

Storm数据流模型有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Storm数据流模型有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Storm数据流模型有哪些"吧!Storm 是一个开源的实
千家信息网最后更新 2026年11月02日Storm数据流模型有哪些

这篇文章主要讲解了"Storm数据流模型有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Storm数据流模型有哪些"吧!

Storm 是一个开源的实时计算系统,它提供了一系列的基本元素用于进行计算:

1 Topology

2 Stream

3 spout

4 bolt

在我们提交我们的topology的时候,一旦你提交了你的topology到你的集群之中后,除非你显示的去停止任务

集群中间的topology会一直的在运行

计算任务Topology是由不同的Spouts 和 bolts,通过数据流 Stream连接起来的图,下面是一个Topology的结构示意图

其中包括了

1 : Spout: Strom 中的消息源头,用于为Topology来生产消息(数据),一般是从外部的数据源开始读取数据,在我们的真实环境之中,我们采用的是 kafka-Storm 流式对接的接口,所以我们 使用的Spout为 :kafkaSpout

2 Bolt, Storm中的消息处理者,用于为Topology 进行消息的处理,Bolt,可以执行如下的几种操作:

2.1 :过滤

2.2: 聚合

2.3: 查询数据库

等几种操作,并且可以一级一级的进行处理,最终Topology会被提交到Storm集群中运行,也可以通过命令停止topology的运行,并且将占用的资源归还给Storm集群。

Storm 数据流模型

数据流的模型是Storm中对数据进行的抽象,它是时间上无界的tuple的元祖,在topology之中,Spout是bolt的源头,

bolt是对于Spout的消费者,负责Topology从特定数据源发射Stream,bolt可以接受任意多个Stream输入,然后进行数据的加工处理工作,如果需要,bolt还可以发射出新的Stream给下一级Bolt进行处理

下面是一个Topology内部Spout和Bolt之间的数据流关系:

topology中每一个计算组件(Spout和bolt) 都有一个并行度来控制,在创建Topology时可以进行指定,Storm在集群内分配对应并行度个数的线程来同时执行这一个组件

那么,有一个这样的问题: 既然对于一个Spout,或Bolt,都会有多个task线程来运行,那么如何在两个组件之间发送tuple 元祖了?

Storm 提供了好几种数据流的分发策略用来解决这一个问题,在Topology定义的时,需要为每一个bolt指定接受什么样的Stream作为它输入

目前Storm中提供了一下的7种Stream Grouping

Shuffle Grouping、

Fields Grouping、

All Grouping、

Global Grouping、

Non Grouping、

Direct Grouping、

Local or shuffle grouping

一种Storm不能支持的场景

如果您阅读到这里,那么您可以细细的回想起来,当我们每一个业务逻辑都被一个Topolo持有的时候,

只能在Topology内按照 "发布-订阅"方式在不同的计算组件(spout/bolt)之间进行数据的处理,而Stream在

Topology之间是无法流动的。

很多时候,开始需要把你所有的业务逻辑写到你的一个Topology之中,请不要忘记:Stream在topology之间是无法流动的

也就是意味着一个业务逻辑的过程,不能够和另外的一个业务过程进行通信

我们假设现在有这样的一个Topology1,在整个Topology的过程之中,通过初步的 filter,join bolt,Business1

Bolt,其中,Filter Bolt用于对数据的过滤,join Bolt用于数据流的聚合,如下图所示:

目前这个Topology已经被提交到集群了,那么,如果我们需要一个新的业务逻辑,而

这个Topology的特点是和Topology1 公用的数据源,而且前期的预处理过程是一样的

那么这时候Storm 怎么满足这一需求?

1 第一: kill掉原先的topology,然后实现bussiness Bolt的计算逻辑,并且重新打包形成一个新的

topology计算任务的jar 包后,提交到Storm集群之中重新运行,那么目前,我们的结构图如下所示:

这样的过程之中,来自于不同数据源的处理过程,经过处理以后,经过join以后,被发送到两个业务逻辑的处理Bolt之中。

第一种方式的缺陷:

Topology 需要重新来部署,并且状态会丢失。而且需要修改你自身的topology结构,失去了稳定性的保证

2:第二种方式:

同一份的数据源被被两份处理流程所消费。无疑增加了External Data Source的负载压力,而且会导致我们的发射数据在集群之中被传输两份,一旦数据重复读取的因子超过2,那么对Storm 的计算Slot的浪费很严重

3 第三种方式

ok,看了以上两种方式以后,也许你会提出下面的解决方案,通过kafka这样的消息中间件,来实现不同Topology的

Spout 共享数据源头,而且这样可以做到

3.1:【消息可靠传输】

3.2: 【消息rewind回传等】

有关kafka-Storm的接入组件,请参考 【至静】所写的其他kafka有关的博文

对于消息中间件的引入,一方面减少了对减少对External Data Source的重复访问压力,而且通过消息中间件,我们屏蔽了External Data Sourcede 的重复访问压力

感谢各位的阅读,以上就是"Storm数据流模型有哪些"的内容了,经过本文的学习后,相信大家对Storm数据流模型有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 数据流 处理 之中 消息 集群 模型 业务 过程 逻辑 之间 数据源 方式 组件 运行 不同 中间件 任务 压力 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 上海卓越科技互联网 互联网科技官网 科技互联网政务服务 互联网科技公司税收优惠 科技互联网公司logo 温州喔噻互联网科技有限公司 千方科技属于互联网企业吗 银川新华互联网科技学校联系电话 迪庆互联网科技招生 翼展科技 首家互联网医院 互联网时代的科技公司 云南省自由互联网科技有限公司 互联网营销推广黑科技 四川互联网展示科技馆设计 珠海东科互联网科技有限公司 科技互联网公司两年变化 杭州融税互联网科技有限公司 承德科技产业互联网平台 互联网 科技节活动 微视频大赛 手冲咖啡和咖啡机区别 A股互联网金融科技公司 互联网科技论文 汇久创客互联网科技 衡水科技产业互联网平台 湖南洣水互联网科技有限公司扣款 中盈科技互联网信息有限公司 广州有谷有贝互联网科技有限公司 郑州欣桑互联网科技有限公司 北京天晋互联网科技有限公司
0