《flink基础教程》读后心得

mac2025-01-12  40

 

flink学习的相关概念

Storm实现了低延迟但是吞吐量上是很低的storm不支持excatly-once语义,因此不能保证数据的正确性Spark streaming通过采用微批次处理方法实现了高吞吐和容错性,但是牺牲了低延迟和实时处理能力,也不能使窗口和自然时间相匹配若要依靠多个流事件来计算结果,必须将数据从一个事件保留到下一个事件,这些保留下来的数据叫做计算的状态flink同时实现了批处理和流处理是将批处理(处理有限的静态数据)视作一种特殊的流处理消息传输层:从各种数据源采集连续事件的数据,并传输给订阅了这些数据的应用程序和服务流处理层:1.持续的将数据在应用程序和系统间移动;2.聚合并处理事件;3.在本地维持应用程序的状态;需要具备的性能:兼具高性能和持久性;将生产者和消费者解耦微服务是将大型系统的功能分割成通常具有单一目的的简单服务           在每个检查点,系统都会记录中间计算状态,从而在故障发生时准确的重置 流处理中主要有两个时间概念事件时间:指的是事件实际发生的时间,其实事件时间就是时间戳处理时间:事件被处理的时间,处理事件的机器多测量的时间摄取时间:事件进入流处理框架的时间,,,,,,,,,,,,,缺乏真实 事件时间的数据会被流处理框架附上时间戳即流处理第一次看到它的时间(这个操作由source函数完成它是程序的第一次处理节点)当采用事件时间定义窗口时,应用程序可以处理乱序事件流以及变化的事件时间偏差,并根据事件实际发生时间计算出有意义的结果窗口包括时间窗口和计数窗口、会话窗口时间窗口包括滚动窗口和滑动窗口:分组依据为时间戳滚动窗口:计算一定时间段内的数值滑动窗口:计算一定时间段内的数据但是一定时间段内滑动一次计数窗口:分组依据是元素的数量会话指的是活动阶段,其前后都是非活动阶段flink是目前唯一支持会话窗口的流处理器开窗机制和检查点机制完全分离,这意味着窗口时长检查点间隔事件时间是数据处理具有准确性,因为用同一组数据运行同样的 程序具有相同的结果,是流处理框架具有重新处理数据的能力flink通过水印来推动事件时间,水印是嵌在流中的常规记录,计算程序通过水印来获知某个时间点已到,水印使事件时间和处理时间完全无关水印是唯一让我们直面乱序事件流并保证正确性的机制流式计算分为有状态和无状态两种情况:无状态的计算观察每个独立事件,并根据最后一个事件输出结果。有状态的计算则会基于多个事件输出结果,包括:1.所有类型的窗口。2.所有用于复杂事件处理的状态机。3.流与流之间的所有关联操作,以及流与静态表或者动态表之间的关联操作

无状态流处理和有状态流处理区别:黑条代表输入记录,无状态流处理每次只转换一条输入记录,并且根据最新的输入记录输出结果(白条);有状态流处理维护所有已处理记录的状态值,并根据每条输入记录更新状态,因此输出记录(灰条)是综合考虑多个事件后的结果 

一致性

在流处理中一致性分为三个级别

at-most-once:故障发生之后计算结果可能丢失at-least-once:表示计算结果可能大于计算值,但绝不会小于正确值,也就是说计数程序在发生故障后可能会多算,但绝不会少算。

exactly-once:保证故障发生后得到的计算结果和正确值保持一致

检查点:保证exactly-once

flink检查点算法的正式名称是异步屏障快照。由flink自动生成,用来故障发生时重新用来处理记录从而修正状态。。此处理解不够深刻,后续搞个专题出来

保存点savePoint:状态版本控制

保存点和检查点的工作方式完全相同,只不过保存点是由用户通过flink命令或者web控制台手动触发,而不是由flink自动触发,和检查点一样,保存点也被保存在稳定存储中。用户可以从保存点重启作业而不用从头开始 。

保存点的用途:1.应用程序代码升级;2.flink版本更新:可以针对正在运行的任务触发保存点,从该保存点处运行flink新版本重启任务;3.维护和迁移:使用保存点可以轻松的暂停和恢复应用程序;4.假设模拟和恢复:在可控点上运行其他的业务逻辑,以模拟假设的场景;5.A/B测试:在同一个保存点开始,并行的运行应用程序两个不同的版本,有助于进行A/B测试。

端到端的一致性和作为数据库的流处理器

根据输出存储系统的类型,flink及与之相同的连接器可以保证端到端的一致性,并且支持多种隔离级别

直接查询状态可以简化架构,同时大幅提升性能

批处理:一种特殊的流处理

无限流处理:输入数据没有尽头,数据处理从当前或者过去的某一时间点开始,持续不停的进行有限流处理:从某一个时间点开始处理数据,然后在某一个时间点结束(输入的数据有限),数据处理在一段时间后停止;计算结果不在过程中持续生成,而在最后末尾处生成一次,那就是批处理批处理定义的窗口属于全局窗口flink在同一个引擎上流处理的机制有 检查点机制和状态机制:用于实现容错和有状态的处理水印机制:用于实现事件时钟窗口和触发器:用于限制计算范围,并定义呈现结果的时间    flink在同一个流处理引擎上批处理的机制有 用于调度和恢复的重遡法用于散列和排序的特殊内存数据结构:可以在需要时将一部分数据从内存溢写到磁盘上优化器:尽可能的缩短生成结果的时间
最新回复(0)