基于Apache SeaTunnel 的数据精确一致性技术实践

引言

在分布式系统中,保障数据一致性是至关重要的任务之一。数据一致性是指分布式系统中的各个节点在进行数据更新时能够保持数据的准确性和完整性。然而,由于网络延迟、节点故障等原因,分布式系统中的数据一致性问题变得复杂而具有挑战性。为了解决这一问题,二阶段提交(Two-Phase Commit)协议被广泛应用于保障分布式系统的数据一致性。本文将介绍二阶段提交协议的工作原理,并探讨其在分布式系统中的关键策略,亦将介绍在下一代数据集成工具 - Apache SeaTunnel 中实现二阶段提交的原理,探讨其在保障数据一致性方面的实践。

分布式一致性

分布式场景下,多个服务同时服务一个流程,比如电商下单场景,需要支付服务进行支付、库存服务扣减库存、物流服务更新物流信息等。如果某一个服务执行失败,或者网络不通引起的请求丢失,那么整个系统可能出现数据不一致。

上述场景就是分布式数据一致性的问题,其根本原因在于数据的分布式操作,引起本地事务无法保障数据的原子性。

分布式一致性问题的解决思路有两种,一种是分布式事务,一种是尽量通过业务流程避免分布式事务。由于分布式事务解决方案具有通用性,本文着重介绍分布式事务实现

分布式事务分类

分布式事务实现方案从类型上分为刚性事务和柔性事务。

刚性事务:保持强一致性,原生支持回滚/隔离性,低并发,适合短事务(XA协议(2PC、JTA、JTS)、3PC)

柔性事务:有业务改造,最终一致性,实现补偿接口,实现资源锁定接口,高并发,适合长事务(TCC、Saga(状态机模式,Aop模式)、本地事务消息、消息事务);本文主要介绍 XA

XA 两阶段提交协议

XA 协议即是通常所说的两阶段提交协议(Two-phase commit protocol),简称 2PC,过程涉及到协调者和参与者。

它是一种强一致性设计,引入一个协调者的角色来协调管理各参与者的提交和回滚,二阶段分别指的是准备(投票)和提交两个阶段。2PC 的算法思路可以概括为:参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈结果决定各参与者是否要提交操作还是回滚操作

第一阶段(准备阶段)

协调者节点(Coordinator)向所有参与者节点(Participants)发送 Prepare 提交请求,并等待它们的回复。

在接到 Prepare 请求之后,每一个参与者节点会各自执行与事务有关的数据更新,并将操作结果保存在本地的日志中。如果参与者执行成功,暂不提交事务,而是向协调节点返回 “完成” 消息。

当协调者接到了所有参与者的返回消息,整个分布式事务将会进入第二阶段。

file

假如在第一阶段有一个参与者返回失败,那么协调者就会向所有参与者发送回滚事务的请求,即分布式事务执行失败

第二阶段(提交阶段)

协调者节点根据参与者节点的回复情况,决定是否提交事务。

如果协调节点收到的都是同意提交,那么它将向所有事务参与者发出提交 Commit 请求,并等待参与者节点的确认。

参与者节点接到 Commit 请求后,将操作结果更新到数据库,并向协调者节点发送确认消息。

协调者节点收到所有参与者节点的确认消息后,最终决定提交或回滚事务,并将决策通知给所有参与者节点。

file

SeaTunnel 中的数据精确一致性实践

SeaTunnel 中的精确一次 Exactly-once 主要是以下 2 种方式来实现:

file

file

在 Sink 端为数据库时,通常采用的方式二阶段提交,以下为其流程图

file

其中涉及几个核心类:

file

特别的以 JDBC 的具体实现来看,

 1、JdbcSink 实现了上述 SeaTunnelSink 接口

file

2、JdbcExactlyOnceSinkWriter 实现了 SinkWriter 接口

3、JdbcSinkCommitter 实现了 SinkCommitter

4、JdbcSinkAggregatedCommitter 实现 SinkAggregatedCommitter

类图如下:

file

如果有对 XA 事务实现感兴趣的同学可以看看 JdbcExactlyOnceSinkWriter 这类里的具体实现

总结

在 SeaTunnel 中,实现数据的精确一致性是一个重要的目标。SeaTunnel 采用了多种实践方法来保障数据的精确一致性。

SeaTunnel 支持二阶段提交,可以根据实际场景灵活定义和执行多个阶段的操作。这种灵活性使得 SeaTunnel 适用于更广泛的应用场景,并能够满足不同的一致性需求。

SeaTunnel 还具备强大的异常恢复和容错机制。它建立了心跳机制,定期检测节点的可用性。当节点故障或网络中断发生时,SeaTunnel 能够自动检测并进行相应的故障转移和恢复操作,以确保系统的稳定性和数据的一致性。

最后,SeaTunnel 提供了可定制的策略和扩展性。用户可以根据具体需求进行定制化设置,选择不同的数据一致性级别、超时机制、冲突解决策略等。此外,SeaTunnel 还支持水平扩展,能够轻松应对大规模分布式系统的需求。

综上所述,SeaTunnel 在实现数据的精确一致性方面采取了多种创新实践。通过二阶段提交、异常恢复和容错机制以及可定制的策略和扩展性,SeaTunnel 能够提供高性能、高可靠性的数据一致性保障。这些实践为分布式系统中的数据一致性问题提供了创新的解决方式!

参考:

https://www.jb51.net/article/236084.htm

https://zhuanlan.zhihu.com/p/417294966

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157214.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows环境下使用VLC获取到大疆无人机的RTMP直播推流

1.环境准备 1.安装nginx 1.7.11.3 Gryphon 下载地址:http://nginx-win.ecsds.eu/download/ 下载nginx 1.7.11.3 Gryphon.zip,解压后修改文件夹名称为nginx-1.7.11.3-Gryphon; 2.安装nginx-rtmp-module 下载地址:GitHub - arut…

7+单细胞分析+预后模型构建+验证实验思路,干湿结合也能拿高分

今天给同学们分享一篇单细胞分析肿瘤预后模型构建验证实验思路的生信文章“Identification of a novel immune-related gene signature for prognosis and the tumor microenvironment in patients with uveal melanoma combining single-cell and bulk sequencing data”&…

土壤数据库辅助工具SPAW计算土壤导水率

土壤数据库辅助工具SPAW 首先下载SPAW工具 点击打开 根据之前的1比100土壤数据查表得到各个组分含量 其中 Field Capacity是田间持水量 Matric Bulk Density是基质粒密度 参考文章 【SWAT水文模型】ArcSWAT土壤数据库辅助工具SPAW简述

苹果相机怎么磨皮 苹果手机怎么磨皮

相信使用苹果相机的小伙伴都有这样的疑惑,苹果相机怎么磨皮?其实可以通过相机的参数进行设置从而达到磨皮的效果,如果觉得相机自带的设置磨皮效果不够好,可以下载磨皮软件来对照片磨皮。今天的文章就来给大家介绍苹果相机怎么磨皮…

问题 D: 免费馅饼(类数塔问题)

免费馅饼 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以…

windows docker desktop 更换镜像 加速

最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度,但有一个问题,部分站点镜像不全或者镜像比较老,建议使用多个镜像站。 https…

【Verilog】7.2.1 Verilog 并行 FIR 滤波器设计

FIR(Finite Impulse Response)滤波器是一种有限长单位冲激响应滤波器,又称为非递归型滤波器。 FIR 滤波器具有严格的线性相频特性,同时其单位响应是有限长的,因而是稳定的系统,在数字通信、图像处理等领域…

私有网络的安全保障,WorkPlus Meet内网视频会议助力企业高效会议

在企业内部沟通与协作中,视频会议成为了一种必不可少的沟通方式。然而,传统的互联网视频会议往往受制于网络不稳定因素,给企业带来不便与困扰。WorkPlus Meet作为一款专注内网视频会议的软件,致力于为企业打造高效、稳定的内网视频…

使用NVIDIA GPU FFmpeg转码 YUV to H264(成功)

0. 官方教程 NVIDIA官方教程:链接,本篇内容主要参考2.2 Software Setup。 1. 安装显卡驱动 确保nvidia-smi能够正常使用: 2. 安装CUDA toolkit 注意要与显卡驱动版本对应,验证toolkit是否正确安装: 3. 安装ffnvco…

有多个网站的话申请什么样的SSL证书比较好?

在当今互联网时代,许多组织和个人都需要同时管理多个网站,这可能包括公司内部网站、在线商店、博客等。为了确保这些网站的安全性和数据保护,选择适合管理多个网站的SSL证书至关重要。今天小编就为大家详细介绍下,不同情况下多个网…

生态扩展:Flink Doris Connector

生态扩展:Flink Doris Connector 官网地址: https://doris.apache.org/zh-CN/docs/dev/ecosystem/flink-doris-connector flink的安装: tar -zxvf flink-1.16.0-bin-scala_2.12.tgz mv flink-1.16.0-bin-scala_2.12.tgz /opt/flinkflink环境…

idea集成测试插件替代postman

idea集成测试插件替代postman 兄弟萌,你再测试接口是否无bug是否流畅的时候是否还在使用“postman”来回切换进行测试呢? 页面切换进行测试,有没有感觉很麻烦呢? 打开postman,输入接口地址,有没有感觉很麻烦…