一、实时流式计算概述
下面主要通过如下4个问题来阐述什么是实时流式计算:
1.什么是实时流式计算?
- 实时计算:响应时间受到时间约束的计算
- 时间约束往往很短,已秒、毫秒为单位
- 软实时 vs. 硬实时
- 流式计算:在不断产⽣的数据流上的计算
- 数据流不断产⽣,没有尽头,计算结果也不断产⽣/更新(对应Storm的Spout)
- 数据流由基本数据单元组成,计算基于基本数据单元处理(对应Storm的Tuple)
- 实时流式计算:在不断产⽣的数据流上的实时计算
- 输⼊数据流是不断产⽣,没有尽头的
- 计算结果的产⽣时间相对数据的流⼊时间是实时的
2.⼤数据背景下有哪些特点?
- 流式处理:数据不断流⼊流出,与批处理相对
- 动态刷新的PV曲线 vs. 每⽇PV统计报表
- 时效性⾼:很快得到结果
- 快是相对的,相对业务需求⾜够快,相对其他技术⾜够快
- ⾼吞吐:应对⼤量的流量单机往往搞不定
- 容错性:需要对⺴络、机器、进程各种异常提供容错机制
- 灵活性:能快速根据需求增减处理逻辑
3.适合什么样的业务场景?
- 实时流式数据分析
- 如实时统计,实时预警
- 实时ETL
- 如实时⽇志过滤、标准化
- 持续计算
- 如新闻⾃动发现分析
4.有哪些关键技术点?
- 系统架构
- 延迟吞吐
- 编程模型
- 数据传输
- 高可用性
- 可维护性
在大数据邻域我们常用的实时计算框架如下所示:
常见系统 | 架构 | 编程模型 | 数据传输 | 高可用性 | 可维护性 |
---|---|---|---|---|---|
Spark Streaming | Spark | RDD | shuffle | WAL | 好 |
Storm | nimbus supervisor worker | DAG Spout Bolt | zmq/netty | 异常处理 消息可靠性 保证机制 | 好 |
spark streaming 与 storm 的对比 https://xiaozhuanlan.com/topic/2786031945
Storm与SparkStreaming的区别?https://blog.csdn.net/mr2zhang/article/details/80354313
Storm与Spark Streaming比较 https://www.jdon.com/46591