Stom概念

实时计算系统

S4 storm puma

 

自己实现一个实时计算系统要考虑哪些问题

1.低延迟、高性能、分布式(单机已无法满足要求)、可扩展、容错

2.容易在上面开发应用程序,消息不丢失败、消息严格有序

 

Storm优势

1.简单的编程模型 类似于MapReduce的Spout/Bolt

2.是一个服务框架,支持热部署,及时上线下线App

3.可以使用多种编程语言(Clojure,java,Ruby,Python)

4.容错性,Storm会管理工作进程与节点的故障

5.水平扩展,计算是在多个线程、进程、服务器间进行的

6.可靠的消息处理

7.快速  (ZeroMQ作为底层消息队列)

8.本地模式

 

Storm架构

Nimbus 主节点,分配代码、布置任务、故障检测

Supervisor 工作节点,监听工作,开始与停止属于自己管理的worker进程

Worker 进行具体处理组件逻辑的进程

Task 在worker中每一个Spout/Bolt的线程称为task.

Zookeeper  Nimbus与Supervisor的调度

Stom概念

 

Storm基本概念

Topology 拓卜,一个job

Spout 在一个topology中产生源数据流的组件

Bolt 在一个topology中接受数据然后执行处理的组件。可以做业务逻辑。

Tuple 一次消息传递的基本单元

Stream 源源不断传递的tuple组成了stream

 

Storm使用场景

1.流聚合,把多个数据流聚合成一个数据流(基于一些共同的tuple字段)

2.批处理,把一组tuple一起处理,而不是一个个单独处理

3.BasicBolt

4.内存缓存+Fields grouping组合

5.计算top N

 

Storm的分组机制

Storm Grouping定义了一个流在Bolt任务间该如何被切分。提供了6种:

1.随机分组 Shuffle grouping

2.字段分组 Fields grouping

3.全部分组 (慎用)

4.全局分组 (解决top N)

5.无分组      (等效于随机分组)

6.直接分组

 

还可以实现CustomStreamGrouping接口来定制自己需要的分组

你可能感兴趣的:(T)