首页 > 其他分享 >【Flink入门修炼】2-1 Flink 四大基石

【Flink入门修炼】2-1 Flink 四大基石

时间:2024-03-01 19:35:02浏览次数:32  
标签:窗口 入门 Flink Checkpoint 修炼 Time 四大 基石

前一章我们对 Flink 进行了总体的介绍。对 Flink 是什么、能做什么、入门 demo、架构等进行了讲解。
本章我们将学习 Flink 重点概念、核心特性等。
本篇对 Flink 四大基石进行概括介绍,是 Flink 中非常关键的四个内容。

一、四大基石

Flink四大基石分别是:Time(时间)、Window(窗口)、State(状态)、Checkpoint(检查点)。
image.png

下面我们对每个部分,分别进行介绍。

(一)State

什么是状态?
流计算不断有数据流入,会基于历史数据和当前数据做计算,那么各个算子之中计算后的数据就是状态。

  • Flink 计算引擎,自身就是基于状态计算框架,默认情况下程序自己管理状态
  • 提供一致性的语义,使得用户在编程时能够更轻松、更容易地去管理状态
  • 提供一套非常简单明了的State API,包括ValueState、ListState、MapState,BroadcastState

image.png

(二)Checkpoint

什么是 Checkpoint(检查点)?
一言以蔽之:用于 Flink 的故障恢复。

Checkpoint 会定期生成快照(Snapshot),对当前 State 进行备份。若Flink程序崩溃,重新运行程序时可以有选择地从这些快照进行恢复。Checkpoint是Flink可靠性的基石

原理:
使用异步屏障快照 Asynchronous Barrier Snapshotting(简称 ABS)算法(依赖于Chandy-Lamport算法的变种)实现分布式快照。

与之相关的,容易混淆的是 savepoint。Savepoint 你可以把它当做在某个时间点程序状态全局镜像,以后程序在进行升级,或者修改并发度等情况,还能从保存的状态位继续启动恢复。

checkpoint savepoint
概念 自动容错机制 程序全局状态镜像
目的 程序自动容错,快速恢复。 程序修改后继续从状态恢复,程序升级等。
用户交互 Flink 系统行为。 用户触发。
状态文件保留策略 默认程序删除,可以设置 CheckpointConfig 中的参数进行保留。 会一直保存,除非用户删除。

(三)Window

流计算一种典型场景是计算一段时间内的统计值,如最近 5min、最近 1h 的点击量。
想完成这个操作,就需要划定一个时间段,也就是开窗,基于这个时间窗口上的数据做计算。

根据窗口数据划分的不同,目前 Flink 支持如下 3 种:

  • 滚动窗口,窗口数据有固定的大小,窗口中的数据不会叠加;
  • 滑动窗口,窗口数据有固定的大小,并且有生成间隔;
  • 会话窗口,窗口数据没有固定的大小,根据用户传入的参数进行划分,窗口数据无叠加。

image.png

(四)Time

要进行窗口计算,首先要明确基于的是什么时间。
Flink 中一共提供了三类时间:

  • 事件时间(Event Time),即事件实际发生的时间,这个时间一般由数据生产方自身携带;
  • 摄入时间(Ingestion Time),事件进入流处理框架的时间;
  • 处理时间(Processing Time),事件被处理的时间。

image.png

Flink还实现了 Watermark 的机制,能够支持基于事件时间的处理,能够容忍迟到/乱序的数据。这个我们后面篇章再展开讲。

二、小结

本篇对 Flink 四大基石进行了概括性的讲解,让大家对 State、Checkpoint、Window、Time 的概念有了初步的认知,后面的篇章将会对四个概念进行细致的讲解和梳理,并会深入到源码中探究其实现原理和使用方式。


参考文章:
Flink 高级特性(一)-Flink四大基石
Flink:四大基石[Time,Window,Checkpoint,State]_flink的四大基石-CSDN博客
FLINK 四大基石_flink四大基石-CSDN博客

标签:窗口,入门,Flink,Checkpoint,修炼,Time,四大,基石
From: https://www.cnblogs.com/shuofxz/p/18047775

相关文章

  • Docker平台入门
    Docker是一个Client-Server机构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境,就是我们前面说到的集装箱。  Docker是一个C/S模式的架构,后端是一个松耦合架构。众多模块各司其职......
  • PyQt入门教程(版本1)
    第1章PyQt5开发环境搭建和配置PyQt5工具可以快速实现简单的界面开发,包括界面设计、布局管理以及业务逻辑实现(信号与槽)。简单说就是使用PyQt5工具可以快速画一个控件摆放整齐、界面整洁有序、布局合理的界面。本文内容本文主要第1节PyQt5环境搭建和配置。主要内容包括:[!TIP......
  • 深入浅出Go语言:泛型入门指南
    深入浅出Go语言:泛型入门指南原创 麻凡 麻凡 2024-03-0109:00 湖南 听全文随着Go1.18版本的发布,泛型正式成为了Go语言的一部分。泛型为Go开发者带来了更强大的类型抽象能力,允许我们编写更加灵活和可复用的代码。本文将带你了解Go泛型的基础知识,让你快速上手这一新特......
  • 【Python入门教程】Python实现鸡兔同笼
    ​        今天跟大家分享一下很久之前自己做的鸡兔同笼求解问题的小游戏,使用公式和基本的判断语句即可实现,可以用来当练手或者消磨时间用。    大家在编代码的时候最重要就是先理清逻辑思路,例如应该套几层循环、分几个模块等等。然后在编码时可以先随意一点,变......
  • Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射
    前言:在本篇Taurus.MVCWebMVC入门开发教程的第六篇文章中,我们将讨论如何配置路由并映射到控制器和操作方法。路由是决定应用程序如何响应客户端请求的重要组成部分,因此在Web开发中非常重要。我们将继续使用Taurus.Mvc命名空间,并探讨如何在应用程序中配置路由。步骤1:了......
  • 拯救php性能的神器webman-初入门
    无意间发现的这个神器webman,真是秋名山上的腾源拓海!该框架是workerman下的一个web开发的生态,我们可以先看看这里workerman的官方网站。workerman早有耳闻,知道它蛮厉害的,跟swoole也不相上下,这次主要是说webman,可以看这里 话不多说,赶紧上手。1.安装这个安装真的很简单,就一......
  • Rocketmq 入门介绍
    从零手写实现mq详细介绍一下rocketmqRocketMQ是由阿里巴巴开发的分布式消息队列系统,它是一个低延迟、高可靠、高吞吐量的消息中间件。RocketMQ最初是作为阿里巴巴的内部项目进行开发的,后来成为了Apache软件基金会下的顶级项目,以Apache许可证2.0发布,使其成为一个开......
  • MIT 6.S081入门lab4.5 Q&A(lec7)
    MIT6.S081入门lab4.5Q&A(lec7)、这部分主要是Q&A部分课程的观看笔记,因此这一部分只有课程观看笔记一、课程视频观看笔记pagtbl实验:基础知识回顾:0x800以上是DRAM,以下是DEVICE;CPU通过MMU获取地址;注意:页表自身也是存在于内存中可以从init打印出来的页表中观测到,0-0三级页表......
  • 一月读书笔记《程序员修炼之道:从小工到专家》
     书中对个人责任和职业发展观念的阐述,让我深受触动。我意识到,作为一名程序员,我们所承担的不仅仅是一份工作,更是一份沉甸甸的责任。每一行代码、每一个程序都是我们用心创造的作品,它们不仅仅是为了完成任务而存在,更是在无形中推动着社会的进步。我们的工作成果可能会影响到成千......
  • 2.24《程序员修炼之道:从小工到专家》读后感
    《程序员修炼之道》是由AndrewHunt和DavidThomas合著的一本经典编程书籍。这本书不仅仅关注编码技术,还强调软件开发中的实践、原则和技巧。以下是一些读者通常提到的主要观点:1.实用性强:书中提供了很多实用的建议,帮助程序员提高编程技能和职业素养。2.注重实践:作者强调实际编......