Flink 状态一致性

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

状态一致性有三种级别:

  • 最多一次 (AT-MOST-ONCE) : 只处理一次 , 遇到故障就会丢失 , 优点 : 处理快
  • 至少一次 (AT-LEAST-ONCE) : 不会丢失数据 , 但存在重复数据
  • 精确一次(EXACTLY-ONCE) : 不会丢失数据 , 也不会重复数据

实现要求 :

  • 端到端 (end-to-end) 的状态一致性 : 数据源、流处理器、外部存储系统都要有保证机制
  • at-least-once 级别 : 数据源能重放数据

端到端精确一次

端到端精确一次 (end-to-end exactly-once) 的关键点 :

  • 输入端 : 数据能重放数据 (如 : Kafka)
  • Flink 靠检查点机制 , 能实现 exactly-once 一致性语义
  • 输出端 : 幂等 (主键) , 事务 (俩阶段提交)

输入端

输入端 :

  • 要实现端到端一致性 , 要输入数据源能重放数据

socket/Kafka 区别 :

  • socket : 当故障后 , 无法重新发 , 就会丢失数据
  • kafak : 当故障后 , 能通过位点 , 重新获取数据 , 就能保证不丢失数据

输出端

要保证 exactly-once 一致性 , 需要输出支持 :

  • 幂等写入 (idempotent) : 重复执行,只会导致一次结果修改 , 如 : Redis , MySQL 更新操作
  • 事务写入 (transactional) : 事务随着检查点 , 提交或回滚

事务写入的思想 :

  1. 事务控制数据向外部系统的写入 , 并与检查点绑定
  2. 当 Sink 任务遇到 barrier 时,就保存状态, 并开启一个事务
  3. 当当前检查点保存完毕,就提交事务
  4. 当出现故障,状态就回退到上个检查点,事务也回滚

事务写入的俩个实现方式 :

  • 预写日志 (write-ahead-log , WAL)
  • 两阶段提交 (two-phase-commit , 2PC) : 先预提交 , 等检查点完毕 , 再正式提交

预写日志

预写日志 (WAL) 的实现步骤 :

  1. 先把结果数据作为日志 (log) 状态保存
  2. 在检查点保存时,也将结果数据一起持久化存储
  3. 当收到检查点完成的通知时,再将所有结果一次性写入外部系统
  4. 当写入所有数据成功后,再次确认相应的检查点,并将确认信息进行持久化保存

缺点 :

  • 一次性写入 , 有些性能问题
  • 再次确定时出现故障 , 会导致重复写入

两阶段提交

实现步骤 :

  1. 当第一条数据到, 或收到检查点的分界线时,Sink 就启动事务
  2. 所有数据写入 , 但事务未提交,都是 预提交 状态
  3. 当 Sink 任务收到检查点完成时,就提交事务
  4. 当出故障 , 当前事务就回滚 , 写入数据就撤回

2PC 对外部系统的要求 :文章来源地址https://www.toymoban.com/news/detail-502298.html

  • 外部系统要提供事务支持,或 Sink 任务能模拟外部系统上的事务
  • 检查点的间隔时,能开启事务 , 并接受数据写入
  • 在收到检查点完成之前,都是等待提交状态
  • Sink 任务, 能在进程失败后 , 恢复事务
  • 提交事务要幂等 : 事务的重复提交是无效的

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

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

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

相关文章

  • 分布式系统的一致性级别划分及Zookeeper一致性级别分析

    在谈到Zookeeper的一致性是哪种级别的一致性问题,以及CAP原则中的C是哪一种一致性级别时有些疑惑。 下面是大多数文章中提到的一致性级别 一致性(Consistency)是指多副本(Replications)问题中的数据一致性。可以分为强一致性、顺序一致性与弱一致性。 1.1 强一致性(Stric

    2024年04月12日
    浏览(39)
  • 【MySql】MySql事务隔离级别与一致性

    MySQL服务可能会同时被多个客户端进程(线程)访问,访问的方式以事务方式进行 一个事务可能由多条SQL构成,也就意味着,任何一个事务,都有执行前,执行中,执行后的阶段。而所谓的原子性,其实就是让用户层,要么看到执行前,要么看到执行后。执行中出现问题,可以

    2024年02月10日
    浏览(28)
  • 一次哔哩哔哩面试经历,Zookeeper一致性级别分析

    首先介绍一下自己的个人基本情况,某专科学校毕业,计算机技术与应用专业,有过2年的工作经验,毕业以后一直想要进入一线互联网大厂工作,但无奈学历受限,屡屡被挡在门外。后来接触到一个朋友,了解到“霸面”,所以鼓起勇气去尝试了,挑战了一下蚂蚁金服,没想

    2024年03月20日
    浏览(40)
  • 数据库隔离级别:从并发冲突到数据一致性的演进历程

    引言: ​ 数据库隔离级别是现代数据库系统中的重要概念,它决定了多个并发事务之间如何进行隔离,并确保数据的一致性。在数据库系统发展的早期,隔离级别的概念并不明确,开发人员需要自行处理并发冲突和数据不一致性的问题。然而,随着数据库系统的发展和应用需

    2024年02月04日
    浏览(29)
  • CHI中一致性状态简介

    Coherence Protocol 各个状态描述(只描述有意思的); I  Invalid: UC  Unique Clean: □ 当前cacheline可以直接修改,不用通知其他RN或HN; □ HNF来snoop时,数据可以返回给HNF, 也可以不返回; □ HNF来snoop时,数据可以直接返回给原始的RN; UCE  Unique Clean Empty: □ 当前cacheline可以直接修改,

    2024年02月15日
    浏览(30)
  • Redis数据一致性问题的三种解决方案

    Redis(Remote Dictionary Server ),是一个高性能的基于Key-Value结构存储的NoSQL开源数据库。大部分公司采用Redis来实现分布式缓存,用来提高数据查询效率。 在Web应用发展的初期,系统的访问和并发并不高,交互也比较少。但随着业务的扩大,访问量的提升,使得服务器负载和关系

    2024年02月14日
    浏览(28)
  • 基于 Flink & Paimon 实现 Streaming Warehouse 数据一致性管理

    摘要:本文整理自字节跳动基础架构工程师李明,在 Apache Paimon Meetup 的分享。本篇内容主要分为四个部分: 背景 方案设计 当前进展 未来规划 点击查看原文视频 演讲PPT ​ 早期的数仓生产体系主要以离线数仓为主,业务按照自己的业务需求将数仓分为不同的层次,例如 DW

    2024年02月14日
    浏览(28)
  • 【征服redis14】认真理解一致性Hash与Redis的三种集群

    前面我们介绍了主从复制的方式和sentinel方式,这里我们看第三种模式-Cluster方式。 目录 1.前两种集群模式的特征与不足 2.Cluster模式 2.1 Cluster模式原理  2.2 数据分片与槽位 2.3 Cluster模式配置和实现 3.一致性Hash 3.1 哈希后取模 3.2 一致性Hash算法 4 Redis Cluster集群 主从复制是Red

    2024年01月22日
    浏览(39)
  • 【大数据】流处理基础概念(三):状态和一致性模型(任务故障、结果保障)

    流处理基础概念(一):Dataflow 编程基础、并行流处理 流处理基础概念(二):时间语义(处理时间、事件时间、水位线) 流处理基础概念(三):状态和一致性模型(任务故障、结果保障) 😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点

    2024年01月25日
    浏览(36)
  • 什么是一致性哈希?一致性哈希是如何工作的?如何设计一致性哈希?

    如果你有 n 个缓存服务器,一个常见的负载均衡方式是使用以下的哈希方法: 服务器索引 = 哈希(键) % N ,其中 N 是服务器池的大小。 让我们通过一个例子来说明这是如何工作的。如表5-1所示,我们有4台服务器和8个字符串键及其哈希值。 为了获取存储某个键的服务器,我们

    2024年02月06日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包