什么是实时流(streaming)数据?
用户在浏览网页或操作App时,其操作行为会源源不断地汇集成日志。游戏玩家在玩游戏的时候,也会产生源源不断的操作记录。这些持续生成的数据便是实时流数据。
- 数据流是连续到达的无穷序列。流处理将不断流动的输入数据分成独立的单元进行处理。
- 流处理是对流数据的低延迟处理和分析
- 在实时流式计算中,最重要的是在任何情况下,消息不重复、不丢失,即Exactly-once
- 实时 秒级 明细 聚合
- 实时处理用例包括:
- 网站监控,网络监控
- 欺诈识别
- 网页点击
- 广告
- 物联网传感器
- 2015 年是流计算百花齐放的时代,各个流计算框架层出不穷。Storm, JStorm, Heron, Flink, Spark Streaming, Google Dataflow (后来的 Beam) 等
流计算较批量计算的优势在哪里?
批量计算需要收集齐数据,才开始进行各种复杂计算,周期可能是几个小时到1天;流计算则是针对流数据处理,无需收集齐数据,近乎实时地对数据进行处理,有利于实时监控业务和发现新机会。流式计算框架实现了高吞吐,低延时,高性能兼具流式计算模式。
流计算性能指标
吞吐量(Throughput)
- 单位时间内由计算框架成功地传送数据的数量,本次测试吞吐量的单位为:条/秒。
- 反映了系统的负载能力,在相应的资源条件下,单位时间内系统能处理多少数据。
- 吞吐量常用于资源规划,同时也用于协助分析系统性能瓶颈,从而进行相应的资源调整以保证系统能达到用户所要求的处理能力。假设商家每小时能做二十份午餐(吞吐量 20 份/小时),一个外卖小哥每小时只能送两份(吞吐量 2 份/小时),这个系统的瓶颈就在小哥配送这个环节,可以给该商家安排十个外卖小哥配送。
延迟(Latency)
- 数据从进入系统到流出系统所用的时间,本次测试延迟的单位为:毫秒。
- 反映了系统处理的实时性。
- 金融交易分析等大量实时计算业务对延迟有较高要求,延迟越低,数据实时性越强。
- 假设商家做一份午餐需要 5 分钟,小哥配送需要 25 分钟,这个流程中用户感受到了 30 分钟的延迟。如果更换配送方案后延迟变成了 60 分钟,等送到了饭菜都凉了,这个新的方案就是无法接受的。
秒
亚秒
实时数据统计架构
实时计算框架对比
- https://juejin.im/post/5bc934d05188255c832142b3
- 后诞生的软件比先前存在的软件设计更为合理也是情理之中
- 所以在较粗时间粒度极限吞吐量上spark streaming要优于flink
流计算问答
- storm相对于flink,spark streamming的优缺点
- storm中如何实现窗口内的聚合操作
- flink中的window实现机制
- flink中状态的保存与实现机制
- storm中如何处理反压问题,flink中如何处理反压问题
- storm中如何动态地调整并行度
- eventTme和processTime的相关概念