如何构建批流一体数据融合平台的一致性语义保证?(13)
首先,在二阶段提交协议中,对于分布式事务的参与方,在 DataPipeline 的场景下为数据写入与 offset 写入,这是两个独立组件。两者之间的写入操作由 Coordinator 进行协调。第一步是一个 prepare 阶段,每一个参与方会将数据写入到自己的目的地,具体持久化的位置取决于具体应用的实现。
第二步,当 prepare 阶段完成之后,Coordinator 会向所有参与者发出 commit 指令,所有参与者在完成 commit 之后,会发出一个 ack,Coordinator 收到 ack 之后,事务就完成了。如果出现失败,再进行相应的回滚操作。其实在分布式数据库的设计领域中,单纯应用一个二阶段提交协议会出现非常多的问题,例如 Coordinator 本身如果不是高可用的,在过程当中就有可能出现事务不一致的问题。
所以应用二阶段提交协议,最核心的问题是如何保证 Coordinator 高可用。所幸在大家耳熟能详的各种框架里,包括 Kafka 和 Flink,都能够通过分布式一致协议实现 Coordinator 高可用,这也是为什么我们能够使用二阶段提交来保证事务性。
Kafka 事务消息原理
关于 Kafka 事务消息原理,网上有很多资料,在此简单说一下能够达到的效果。Kafka 通过二阶段提交协议,最终实现了两个最核心的功能。
推荐阅读
- 小鱼人|如何在新赛季稳定上分?善于抓失误的小鱼人,值得认真练上一波
- 阴阳师|阴阳师SR川猿强度如何 是否值得抽卡 改变斗技环境 大佬的新玩具
- 手机游戏|梦幻西游手游:活力如何换金币 一切都已给出 就看你的选择
- 华佗|三国杀:两位\奶爸\,朱治与华佗比,强度如何呢?
- 亲朋上分|《亲朋上分》266391亲朋下分亲朋上下分永劫无间崔三娘技能介绍 崔三娘如何获得更多技能
- s6|金铲铲之战:S6双城传说如何才能快速上手?基础知识很关键
- |冰雪传奇:平民玩家四转后如何打金
- 穿越火线|CF:传说武器再度上新,那王者、炫金该如何发展?
- 打野|打野已经被削到几乎不能再削了,到底如何平衡打野位置?
- 电子竞技|新华社对话明凯、阿布,探讨电竞选手是如何炼成的?宁王无辜躺枪