15 | 流式计算的代表:Storm、Flink、Spark Streaming
该思维导图由 AI 生成,仅供参考
Storm
- 深入了解
- 翻译
- 解释
- 总结
大数据流计算系统中的代表性框架:Storm、Spark Streaming和Flink,分别展现了各自的特点和优势。Storm框架简化了数据处理流程,使开发者只需关注业务逻辑代码;Spark Streaming利用了Spark的分片和快速计算特性,实现了实时流计算;而Flink不仅可以进行流处理计算,也可以进行批处理计算,对流处理的支持更加完善。这三种框架展示了大数据流计算系统的快速了解。文章还探讨了大数据技术发展历史,从技术和业务的分离角度,引出了流计算架构对互联网在线业务开发的影响,以及未来的发展方向。值得关注的是淘宝等互联网企业尝试了一种类似流计算的、异步的、基于消息的服务调用与依赖架构,展示了未来互联网应用开发的潜在方向。
《从 0 开始学大数据》,新⼈⾸单¥68
全部留言(30)
- 最新
- 精选
- 李鼎(哲良)置顶数据流是久经考验的典型思路,在网络协议(如TCP)、数据平台这样场景,早就应用多年习以为常了。淘宝业务的应用架构升级可以认为是把这样思路应用到了业务系统开发中,把『流』作为业务表达上的一等概念和手段,并在业务架构/系统能力优化提升。 简单地说,因为业务面向数据流来编写,一方面业务逻辑表达可以自然接近业务流程;另一方面逻辑运行可以是全异步有很好的性能提升,一核心后端应用在双11线上,单机QPS提升30%,RT下降40%。流程的表达与异步/同步执行方式是分离的(如果了解过像RxJava,这句会容易理解:)。 另外,『流』也为业务系统的保护提供新的一些方法,在思路上其实和流计算平台是一样的,这对业务大型系统的稳定性来非常重要。 当然,业务的流式架构,在业务编写上有些FP风格(简单地说比如充分使用了Lambda),平时我们大家业务上主要是用命令式顺序平铺方式来表达,会有要个熟悉过程,虽然不见得有多难 :)
作者回复: 👍🏻 欢迎有兴趣的同学进一步探讨。 李鼎的流式架构文档地址:https://github.com/oldratlee/rp-pratice
2018-12-065162 - Jowin智慧老师,我是从事金融实时数据处理的,有一类典型需求是从原始实时数据计算出各种衍生数据,但是有状态积累。比如,当前状态是S0,收到数据A0,此时要根据(S0,A0)生成数据A1,同时要更新当前状态S1,后续的新数据再基于S1处理。团队考虑过使用Stream作为计算平台,有两个问题没想清楚怎么处理: 1)如果计算任务故障挂掉,会不会导致这期间的数据丢失? 2)另外,由于数据量也不小,差不多在每秒4~5万条消息,状态S的更新特别频繁,常规的存储在性能上没有办法满足,所以我们是采用内存+日志文件保存。如果重启的任务被分配套新的服务节点上,我们是否就还得考虑这部分数据也要迁移过去? 盼复,谢谢。
作者回复: 1 spark streaming有容错机制,不会丢失。当然,服务器数量要充足。 2 试下Redis存储状态。
2018-12-0111 - 星凡文中有这么一段话:“回到流计算,固然我们可以用各种分布式技术实现大规模数据的实时流处理,但是我们更希望只针对小数据量进行业务开发,然后丢到一个大规模服务器集群上,就可以对大规模实时数据进行流计算处理。”,在下愚昧,没有get到,不用分布式技术实现大规模数据实时流处理的真正原因是?
作者回复: 我这里可能没表达清楚,这里是说不用传统的互联网分布式技术架构,就是负载均衡、微服务调用各种技术方案进行流计算,虽然这些技术也能解决流计算的需求场景。 主要是因为,前述这些互联网分布式技术架构都是定制式的,每个流计算场景都需要进行特定的技术开发。而大数据流计算平台则是提供一个统一的计算平台,以及相关的编程框架,只需要按照这个框架开发流计算程序提交到大数据流计算平台执行,不需要关注数据如何流转、集群如何扩展,就可以完全搞定大数据流计算。
2019-10-0610 - zhj1面向数据流的编程在java里逐渐展露头角,之前rxjava更多的是用于android,直到hystrix才算是后端一个大规模应用的案例(也和场景有关吧,后端的大多业务都是短事物处理去构建一条数据流水线反倒显得累赘),reactor是响应式编程的另一个实现,直到spring5全面拥抱以后,才完全进入人们视野(所以技术落地离不开大厂的支持),单纯的业务层处理构造一条很短的数据流意义不大(因为数据源可能还是需要返回所有数据),spring webflux结合springdata从持久层到业务层构建了自下而上的数据流(前提是持久层驱动是非阻塞的),并利用reactor-netty(支持网络背压),理想情况下将构建一个全链路的按需处理数据流 2 数据流编程,有点类似当年面向函数->面向对象,更多的是思考方式的改变,异步和数据流都是为了正确的构建数据流间的关系而存在,不过目前貌似不支持对数据流分片并行处理
作者回复: 👍🏻
2019-01-087 - 🐱您的好友William🐱主攻人工智能,机器学习和算法实现的应该学习哪种呢?Storm,Spark还是Flink呢?
作者回复: spark
2018-12-045 - 李二木和老师探讨一个问题,对于架构设计,目前流行的是微服务,我个人觉得微服务还是有好些缺点。架构从开始的合走到现在的分,未来会不会从分又到和呢?
作者回复: 不会
2018-12-013 - Geek_ea2bf8智慧老师,通常的场景是,已经有大量的存量数据,在离线的Hadoop中,又有实时需求,依赖于历史存量数据,和当日的实时数据。这种典型场景,架构应该如何设计啊?
作者回复: 可参考第26课
2023-07-25归属地:上海 - Geek_8593e5Flink 处理实时数据流的方式跟 Spark Streaming 也很相似,也是将流数据分段后,一小批一小批地处理。(?这没听懂) Flink是分批的吗?
作者回复: 是的,Flink也有window函数
2022-03-08 - 万~~你好 storm spark flink 都是优秀的框架 那我们应该学习哪个呢? 都学肯定精力不够 而且难以精通2018-12-01227
- laurencezl智慧老师你好,这节对storm.spark.flink的介绍感觉过于概述了!后面是否会有详细的文章介绍,比如分析对比一下他们三者各自优缺点在哪里?各自试用与不适用的业务场景有哪些之类的呢?2018-12-04318