举例说明

甲乙丙丁四人要组织一个会议,需要确定会议时间,不妨设甲是协调者,乙丙丁是参与者。

投票阶段:

(1)甲发邮件给乙丙丁,周二十点开会是否有时间;

(2)甲回复有时间;

(3)乙回复有时间;

(4)丙迟迟不回复,此时对于这个活动,甲乙丙均处于阻塞状态,算法无法继续进行;

(5)丙回复有时间(或者没有时间);

提交阶段:

(1)协调者甲将收集到的结果反馈给乙丙丁(什么时候反馈,以及反馈结果如何,在此例中取决与丙的时间与决定);

(2)乙收到;

(3)丙收到;

(4)丁收到;

来源

代码以[4]为主,我自己修正了一些bug,增加了依赖。

集群准备工作

启动Zookeeper集群、Kafka集群、Flink集群。

流程图

Mysql准备工作

create database test;

use test;

CREATE TABLE `mysqlExactlyOnce_test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `value` varchar(255) DEFAULT NULL,
  `insert_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

文件说明与联系

文件 说明 需要设定的参数
DBConnectUtil.java java连接数据库
KafkaUtils.java(生产者,顶层文件) 生产者 broker_list
MysqlExactlyOncePOJO.java 一个pojo对象
MySqlTwoPhaseCommitSink.java(被调用) 插入数据,制造异常 jdbc:mysql://以及sql语句
streamdemokafka2mysql.java(调用MySqlTwoPhaseCommitSink,顶层架构) Flink source与sink

BOOTSTRAP_SERVERS_CONFIG

运行步骤

①运行StreamDemoKafka2Mysql.java
②运行KafkaUtils.java

调试用命令

$KAFKA/bin/kafka-topics.sh --list  --zookeeper  Desktop:2181

$KAFKA/bin/kafka-console-consumer.sh  --bootstrap-server Desktop:9091 --from-beginning --topic mysql-exactly-Once-4

修改的主题的话,需要同时在kafkautils.java和StreamDemoKafka2Mysql.java中修改

实验效果

tijiao最终代码如下

Reference:

[1]Flink两阶段提交

[2]Flink 之 MySQL二阶提交

[3]解决Flink消费Kafka信息,结果存储在Mysql的重复消费问题

[4]Flink实现Kafka到Mysql的Exactly-Once

[5]Kafka常用命令

[6]一分钟了解两阶段提交2PC(运营MM也懂了)

flink二阶提交(没有搞完)相关推荐

  1. flink写入iceberg(没有搞完)

    Reference: [1]Flink集成数据湖之实时数据写入iceberg [2]在 Flink 中使用 iceberg [3]基于 Flink+Iceberg 构建企业级实时数据湖 [4]Flin ...

  2. flink 任务提交问题汇总

    flink 任务提交问题汇总 1.提交flink自带任务WordCount.jar遇到的问题: 2.提交flink 批处理任务时遇到的问题 3.flink定时任务,mysql连接超时问题 4.flin ...

  3. matlab判断系统稳定性 -Nyquist图(极坐标图)判据(还没有搞完。。。。。。。)

    matlab判断系统稳定性 -Nyquist图(极坐标图)判据(还没有搞完.......)

  4. Flink界面提交任务报错500【The program plan could not be fetched】

    flink界面提交任务 F12报错 network报错: {"errors":["Internal server error.","<Excep ...

  5. OkHttp完美封装,一行搞完外部请求

    OkHttp完美封装,一行搞完外部请求 OKHttpUtil 在Java的世界中,Http客户端之前一直是Apache家的HttpClient占据主导,但是由于此包较为庞大,API又比较难用,因此并不 ...

  6. flink中各种图的原理(还没搞完)

    https://lulaoshi.info/flink/chapter-system-design/task-resource.html

  7. iOS-通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完

     现在基本所有的App都会接入支付宝支付以及微信支付,也有很多第三方提供给你 SDK帮你接入,但是这种涉及到支付的东西还是自己服务器搞来的好一些,其实搞懂了 逻辑非常的简单,下面直接给大家说说下基本流 ...

  8. barrier相關知識點整理(还没搞完)

    Reference: [1]Flink之状态管理--容错--检查点 [2]一文详解Flink Exactly-Once [3]Flink作业问题分析和调优实践 [4]Flink -- 容错性机制- 屏 ...

  9. ❤️技术改变命运!中秋一天搞完私活,4K到手,分享下经验!确实有技术啥都不愁!❤️

    中秋节,放三天假.三天过得非常充实. 没有出去,外面人山人海的. 我不喜欢热闹. 本来计划的是充电三天.但是突然有个粉丝朋友找找到,要搞个springboot 的小项目,看起来非常着急的样子,不是很想 ...

最新文章

  1. 孙立岩 python-basic: 用于学习python基础的课件(十三十四 十五)
  2. form提交后,jquery 显示 文本框选择值和下拉框选中值
  3. makefile文件编写_九图记住Makefile
  4. 有关android UI 线程
  5. ffplay.c学习-5-视频输出和尺⼨变换
  6. 【0702作业】输出九九乘法表
  7. 【ArcGIS|空间分析】数据采集处理(全国大学生GIS技能大赛试题)
  8. VS 番茄助手添加头注释 以及使用方式
  9. 计算机网络教程 azw3,Windows 10从入门到精通(pdf+epub+mobi+txt+azw3)
  10. bzoj3168 [Heoi2013]钙铁锌硒维生素(矩阵求逆+匈牙利)
  11. Android使用高德地图地理围栏定位自动发送短信
  12. 微信支付,小程序支付V3
  13. .NET 4.0安装提示一般信任关系失败
  14. 小程序 正整数与char(character)的相互转换,十六进制与十进制相互转换
  15. 自己搭建一个局域网(两台电脑)
  16. 【博弈论】HDU 2188
  17. 2021广东省安全员 考试题库及答案 广东三类人员题库安全员
  18. 桥梁在线计算机监测系统,桥梁安全在线监测系统
  19. 又一个网友放生后拍出红莲瓣!
  20. QQ超级秘笈:免费申请QQ号码(转)

热门文章

  1. hadoop常见面试题
  2. Codeforces Round #408 (Div. 2)
  3. 四象限法推导lm曲线_IS曲线推导
  4. net start mysql 发生系统错误2 系统找不到指定的文件
  5. mysql 商品属性_MySQL产品属性表设计
  6. 报错空指针异常_让你为之颤抖的Java常见的异常exception
  7. Scrapy中Request的回调函数不执行
  8. ant design表格添加loading效果
  9. Mpvue+koa开发微信小程序——wx.request()的封装及应用
  10. VTK教程系列:VTK基础及应用开发教程