IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Flink Kafka Sink 源码分析 -> 正文阅读

[大数据]Flink Kafka Sink 源码分析

Sink部分Flink根据Kafka分为了2个部分

  • 0.11之前
  • 0.11之后

0.11之前因为没有kafka的事务相关 所以没法做到 消息的exactly_once

0.11之后是可以实现的

FlinkKafkakProducer 的创建有多个重载构造方法,当我们没有指定相关的 流checkpoint 语义,

那么默认 是at_least_once

FlinkKafkaProducerBase

public abstract class FlinkKafkaProducerBase<IN> extends RichSinkFunction<IN> implements CheckpointedFunction {

继承 sinkFunction 基于实现checkpointFunction

对于SinkFunction相关的处理逻辑是在invoke,snapshot里面,但我们首先看下其一些前置准备工作 open(), init()

Open

open方法做了一些前置工作的准备,主要是一下几个

  1. 序列化方式
  2. 创建KafkaProducer
  3. metrics
  4. checkpoint配置

Invoke

invoke(FlinkKafkaProducer.KafkaTransactionState transaction, IN next, Context context)

如果 transcation 如果是 EXACTLY_ONCE 每次会在每次 checkpoint的时候变化

做一些消息转发的动作, 如果是 exactly_once模式 这时候是不会真正的提交,只有在checkpoint的时候才会

将本次事务的消息进行提交,然后再开启下一个事务

Snapshot checkpoint 阶段 (重点)

  1. FlinkKafkaProducer.snapshot()
    1. super.snapshotState(context) 实际调用 TwoPhaseCommitSinkFunction
  2. TwoPhaseCommitSinkFunction.snapshotState
    1. 获取checkpointId
    2. preCommit 将当前事务的数据进行提交
      1. kafkaProducer: 将exactly_once 和 at_least_once 的数据进行 producer.flush

? ? ? ? 3. currentTransactionHolder = beginTransactionInternal() 开启一个新的事务

  • ????????????????这里只有对 exactly_once 模式进行了事务创建
  • ????????????????at_least_once && none 默认复用之前的

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:03:44  更:2022-09-24 21:06:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:12:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码