数据的生成可以看作一连串发生的离散事件,这些事件流会伴随着不同的数据流、操作和分析,都会由一个通用的软件框架和基础设施来处理。
Storm 正是最流行的实时流计算框架之一,它提供了可容错分布式计算所要求的基本原语和保障机制,可以满足大容量关键业务应用的需求。它不但是一套技术的整合,也是一种数据流和控制的机制。很多大公司都将 Storm 作为大数据处理平台的核心部分,它具有每天或者每小时处理上亿次事务的能力。
Storm topology 的组成部分——stream、spout 和 bolt
Strom分布式计算结构成为topology(拓扑),由stream(数据流),spout(数据量的生成者),bolt(运算)组成。如图所示:
- stream:Storm 的核心数据结构是 tuple。tuple是包含了一个或者多个键值对的列表,Stream 是由无限制的 tuple 组成的序列。
- spout:spout 代表了一个 Storm topology 的主要数据入口,充当采集器的角色,连接到数据源,将数据转化为一个个 tuple,并将 tuple 作为数据流进行发射。因为 spout 通常不会用来实现业务逻辑,所以在多个 topology 中常常可以复用。
- bolt:bolt 可以理解为计算程序中的运算或者函数,将一个或者多个数据流作为输入,对数据实施运算后,选择性地输出一个或者多个数据流。bolt 可以订阅多个由 spout 或者其他bolt 发射的数据流,这样就可以建立复杂的数据流转换网络。像 Spout API 一样,bolt 可以执行各式各样的处理功能,bolt 的编程接口简单明了,bolt 可以执行的典型功能包括:
● 过滤 tuple
● 连接(join)和聚合操作(aggregation)
● 计算
● 数据库读写
Storm 的并发机制
在 Storm 的间接中提到过,Storm