聊聊Flink必知必会(二)

这篇具有很好参考价值的文章主要介绍了聊聊Flink必知必会(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Checkpoint与Barrier

Flink是一个有状态的流处理框架,因此需要对状态做持久化,Flink定期保存状态数据到存储空间上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoint机制。而Checkpoint为Flink提供了Exactly-Once的投递保障。

流处理是一个数据不断输入的过程,为了更好更方便的快照,需要将数据进行分批分段;而Barrier(栅栏)就是做这个事情,它将数据流分段,在进行Checkpoint的时候Flink会在数据流源头处周期性地注入Barrier,这些Barrier会作为数据流的一部分,一起流向下游节点并且不影响正常的数据流。Barrier的作用是将无界数据流从时间上切分成多个窗口,每个窗口对应一系列连续的快照中的一个,每个Barrier都带有一个快照ID,一个Barrier生成之后,在这之前的数据都进入此快照,在这之后的数据则进入下一个快照。
如图所示,当ID为n的Checkpoint Barrier到达每个算子后,表示要对n-1和n之间状态更新做Snapshot。
聊聊Flink必知必会(二)

Connector与端到端的Exactly-Once保障

一个完整的Flink作业包括Source和Sink两大模块,Source和Sink肩负着Flink与外部系统进行数据交互的重要功能,它们又被称为外部连接器(Connector)。
Flink的Checkpoint过程保证了一个作业内部的数据一致性,主要是因为Flink对如下两类数据做了备份。

  • 作业中每个算子的状态。
  • 输入数据的偏移量Offset。

端到端的Exactly-Once问题是分布式系统领域最具挑战性的问题之一,很多系统都在试图攻克这个问题。在这个问题上,Flink内部状态的一致性主要依赖Checkpoint机制,外部交互的一致性主要依赖Source和Sink提供的功能。Source需要支持重发功能,Sink需要采用一定的数据写入技术,比如幂等写或事务写。

Source重发

对于Source重发功能,如图7-1所示,只要我们记录了输入的偏移量Offset,作业重启后数据发送方根据该Offset重新开始发送数据即可。Kafka的Producer除了发送数据,还能将数据持久化写到日志文件中。如果下游作业重启,Kafka Producer根据下游作业提供的Offset,从持久化的日志文件中定位到数据,可以重新开始向下游作业发送数据。

聊聊Flink必知必会(二)

Sink幂等写

幂等写(Idempotent Write)是指,任意多次向一个系统写入数据,只对目标系统产生一次结果影响。

事务(Transaction)是数据库系统所要解决的核心问题。Flink借鉴了数据库中的事务处理技术,同时结合自身的Checkpoint机制来保证Sink只对外部输出产生一次影响。

简单概括,Flink的事务写(Transaction Write)是指,Flink先将待输出的数据保存下来,暂时不向外部系统提交;等到Checkpoint结束,Flink上、下游所有算子的数据都一致时,将之前保存的数据全部提交到外部系统。换句话说,只有经过Checkpoint确认的数据才向外部系统写入。如图所示,在数据重发的例子中,如果使用事务写,那只把时间戳3之前的输出提交到外部系统,时间戳3以后的数据(例如时间戳5和8生成的数据)先被写入缓存,等得到确认后,再一起提交到外部系统。这就避免了时间戳5的数据多次产生输出,并多次提交到外部系统。

聊聊Flink必知必会(二)

在事务写的具体实现上,Flink目前提供了两种方式:预写日志(Write-Ahead-Log,WAL)和两阶段提交(Two-Phase-Commit,2PC)。这两种方式也是很多数据库和分布式系统实现事务时经常采用的方式,Flink根据自身的条件对这两种方式做了适应性调整。这两种方式的主要区别在于:Write-Ahead-Log方式使用Operator State缓存待输出的数据;如果外部系统自身支持事务,比如Kafka,就可以使用Two-Phase-Commit方式,待输出数据被缓存在外部系统。文章来源地址https://www.toymoban.com/news/detail-481111.html

到了这里,关于聊聊Flink必知必会(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySql必知必会

    Buffer Pool基本概念 Buffer Pool:缓冲池,简称BP。其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。 Buffer Pool由 缓存数据页(Page) 和 对缓存数据页进行描述的 控制块 组成, 控制块中存储着对应缓存页的所属的 表空间、数据页的编号、以及对应缓存页在Buffer Poo

    2024年01月22日
    浏览(65)
  • MySQL必知必会(初级篇)

    数据库 (DataBase,DB),是统一管理的、长期存储在计算机内的、有组织的相关数据的集合。特点是数据见联系密切、冗余度小、独立性高、易扩展,并且可以为各类用户共享。 MySQL :是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的

    2023年04月08日
    浏览(50)
  • 《SQL 必知必会》全解析

    不要哀求,学会争取。若是如此,终有所获。 原文:https://mp.weixin.qq.com/s/zbOqyAtsWsocarsFIGdGgw 你是否还在烦恼 SQL 该从何学起,或者学了 SQL 想找个地方练练手?好巧不巧,最近在工作之余登上牛客,发现了牛客不知道啥时候上线了SQL 必知必会的练习题。 《SQL 必知必会》作为麻

    2024年02月08日
    浏览(49)
  • ChatGPT入门必知必会

    更多文章欢迎关注公众号: stackoveriow 2023年是真正意义上的AI之年,因为ChatGPT 2007年,iPhone开启了智能手机时代, 2023年,我们迎来了人工智能时代,我们正处于历史的大转折点上,这也许是启蒙运动级别的思想和社会转折,工业革命级别的生产和生活转折 。继22年12月份从GP

    2023年04月18日
    浏览(123)
  • 《MySQL 必知必会》课程笔记(三)

    创建和修改数据表,是数据存储过程中的重要⼀环。 我们不仅需要把表创建出来,还需要正确地设置限定条件,这样才能确保数据的一致性和完整性。 同时,表中的数据会随着业务需求的变化而变化,添加和修改相应的字段也是常见的操作。 首先,我们要知道 MySQL 创建表的

    2024年02月03日
    浏览(45)
  • 必知必会Java命令-jps

    你好,我是阿光。 最近想着把工作中使用过的java命令都梳理一下,方便日后查阅。虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获。这也是这篇笔记的由来。 今天先聊聊 jps 命令。 jps 命令是JDK提供的一个工具,用于查看目标系统上的Java进程基本信息(进程

    2024年02月05日
    浏览(43)
  • 【数据库】索引必知必会

    数据库中索引(Index)是一种帮助快速查找数据的数据结构,可以把它理解为书的目录,通过索引能够快速找到数据所在位置。 使用索引可以加快数据查找的效率,这是创建索引的最主要原因。 场景的索引数据结构有:Hash表(通过hash算法快速定位数据,但不适合范围查询,

    2023年04月20日
    浏览(54)
  • 抽象语法树AST必知必会

    打开前端项目中的 package.json,会发现众多工具已经占据了我们开发日常的各个角落,例如 JavaScript 转译、CSS 预处理、代码压缩、ESLint、Prettier 等。这些工具模块大都不会交付到生产环境中,但它们的存在于我们的开发而言是不可或缺的。 有没有想过这些工具的功能是如何实

    2024年02月16日
    浏览(51)
  • 缓存中间件Redis必知必会

    作者: 逍遥Sean 简介:一个主修Java的Web网站游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言: 本文是对redis的基本用法操作的整理。 如果需要在linux环境中搭建一个redis服务参考

    2024年02月11日
    浏览(50)
  • Python必知必会 os 模块详解

    ❤️ 作者简介 :大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者 🐟 个人主页 :https://blog.csdn.net/qq_52007481 ⭐ 个人社区 :【小鱼干爱编程】 🔥 算法专栏 :算法竞赛进阶指南 💯 刷题网站 :市面上的刷题网站有很多如何选择一个适

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包