29 | 流计算与消息(一):通过Flink理解流计算的原理
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
流计算框架Flink的原理及应用是本文的主题。文章首先介绍了流计算的适用场景和流计算框架的便利性,然后通过一个实时统计任务的例子详细介绍了如何使用Flink实现流计算任务。作者通过具体的代码示例展示了如何定义输入、计算逻辑和输出,以及Flink动态生成的数据处理代码。文章还解释了Flink集群的架构和任务在集群中的执行过程,包括JobGraph的生成和Task的并行执行。最后,文章指出流计算框架的性能优势主要源于自动拆分计算任务实现并行计算和内置的优化算子。读者通过本文可以快速了解Flink的原理和应用,以及流计算任务在Flink集群中的执行过程。
《消息队列高手课》,新⼈⾸单¥59
全部留言(13)
- 最新
- 精选
- 张天屹老师你好,请教个概念,虽然处理统计的程序叫做“流”计算,但是比如每5秒或者1分钟这样的时间间隔统计一次,那么对于有向无环图的每个节点,其实还是按照“批处理的”吗,即必须等这一分钟的结果汇集为一批处理完了,才传输到协议个Task节点。
作者回复: 不是这样的,每条数据是实时流过的,并不会等待。 只有做按时间汇聚的那个节点,它会记录汇总的中间结果(注意,它只记录汇总的中间结果,并不知把所有数据都攒起来),在每个时间窗口结束后会在流中产生一条新的数据(也就是统计结果),流往下游。 比如,每分钟统计数据条数,汇聚的这个节点每流过一条数据,统计值就+1,它不会保存流过的数据,等到时间窗口结束,这个统计就做完了,它直接生成一条统计结果数据,发往下游。
2019-10-04233 - 姑射仙人老师您好,采用时序数据库比如prometheus,然后用grafana去做展示监控指标信息。感觉从表现形式上和流计算有些类似,时序数据库也支持统计功能。这两种形式的架构和使用场景,老师有什么看法呢?(除了并行计算这个点)
作者回复: 场景不太一样,这种场景更在乎的是海量吞吐,快速查询,对于数据可靠性和一致性的要求没那么高,毕竟一个图标上少一两个点也没什么关系。
2019-10-0910 - DFighting上一篇留言无意提交了,文章具体内容可以谷歌搜索Streaming 101,Streaming 102
作者回复: Streaming 101 这篇博文就是Flink的理论基础。
2019-10-286 - 川杰老师,请问网上说的ACK机制,在消息队列中到底什么场景下要使用呢? 我理解,异步线程发送消息后,虽然主线程没法捕获异常,但子线程也可以判断出是否发送成功。那么为什么还要等待接收方返回一个数据处理完的结果呢?
作者回复: 这个原因很简单,你想一下,客户端发送成功并不等于服务端处理成功,如果数据在网络传输过程中丢了呢?如果服务端在处理过程是失败了呢?所以,需要客户端收到服务端明确的告知:”数据我收到并且处理成功了“,才能保证数据不会丢失。
2019-10-015 - 朱月俊flink框架是如何根据逻辑代码进行子task拆解的哈?
作者回复: 这个过程还是比较复杂的,很难一两句话讲清楚。 你可以去看一下相关的文章或者Flink的源码,重点看一下:StreamGraph - JobGraph - ExecutionGraph这个过程。
2020-06-2524 - 川杰如果服务端在处理过程是失败了呢?所以,需要客户端收到服务端明确的告知:”数据我收到并且处理成功了“,才能保证数据不会丢失。 老师您好,对于上一问题,我还有疑问。 对于服务端处理过程中的失败,假设场景: 业务A处理完毕后,数据需要落地,结果数据保存时出现异常,无法正常落地。 对于这种场景,应该是业务处理完毕后就发送确认给消息产生者吧? 我想表达的意思是,对于服务端这种业务场景,是否使用ACK,应该还是要具体问题具体分析的吧?
作者回复: 一般应该是数据持久化完成后在发送消费成功确认。
2019-10-02 - Devin思考题:槽数和并行度的关系 “槽数 Task Slot”代表的是每个 Task Manager 可以同时执行的子任务 Sub Task 数 “并行度 Parallelism”代表的是执行该任务的线程数,每个线程对应的就是一个 Sub Task,这些Sub Task可能在同一个 Task Manager 中,也可能分布在多个 Task Manager中2020-01-029
- tianbingJ感觉还是没有说Exactly Once是怎么实现的2022-03-012
- UncleNo2那,计算代码是jobmanager生成的,还是由执行它的taskmanager生成的?2021-03-152
- 朱月俊slot是槽位的意思,每个槽位可以运行一个sub task。因此,TaskManager中的槽位有两个含义:(1)最多容纳sub task的个数;(2)最高并发数;2020-07-012