tongchenkeji 发表于:2023-7-2 16:40:190次点击 已关注取消关注 关注 私信 Flink CDC Sink到Redis是没有实现两阶段提交的吗?[阿里云实时计算 Flink版] 暂停朗读为您朗读 Flink CDC Sink到Redis是没有实现两阶段提交的吗我用自定义写的 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 实时计算Flink版# NoSQL625# Redis510# 云数据库 Redis 版509# 实时计算 Flink版3179# 流计算2236
Star时光AM 2023-11-27 18:26:25 1 是的,目前 Flink CDC 中的 Redis Sink 还没有实现两阶段提交。两阶段提交(Two Phase Commit)的主要目的是确保将数据同时同步到多个 Sink,并处理可能发生的部分 Sink 失败的情况。 具体来说,两阶段提交包括以下两个阶段: 1. 准备阶段(Prepare):将数据提交到多个 Sink。如果任何一个 Sink 准备失败,整个事务将回滚。 2. 提交阶段(Commit):如果准备阶段成功,将多个 Sink 的数据实际提交。 在 Flink CDC 中,目前只支持简单地将变更日志的数据同步到单个 Sink 上。这意味着如果 Redis Sink 在消费过程中发生失败,Flink CDC 会丢失消费者的偏移量,从上次失败的位置重新开始消费。因此,数据可能会出现重复的情况。 要实现两阶段提交,Flink CDC 需要完成以下工作: 1. 支持将一个表同时同步到多个 Sink。 2. 在 Sink 端实现两阶段提交的准备和提交阶段。 3. 在 Flink 层面提供补偿机制,处理部分 Sink 准备或提交失败的情况。 实现这些功能需要 Flink CDC 与 Sink 之间的适配。目前 Redis Sink 还没有实现这些功能。 然而,有一个名为 “ververica-connector-redis” 的开源项目可以用作 Redis Sink,并且支持两阶段提交协议。您可以在 Maven 仓库中找到该项目的相关信息。请注意,使用此项目时需要确保与 Flink 的版本匹配。
算精通AM 2023-11-27 18:26:25 2 很对,Flink CDC 的 Redis Sink 目前还没有实现两阶段提交。两阶段提交(Two phase commit)的主要作用是:保证数据在同时同步到多个 Sink 时的一致性处理可能发生的部分 Sink 失败的情况具体来说,两阶段提交包括:准备阶段(Prepare):将数据提交到多个 Sink。如果有任何 Sink 准备失败,则整个事务回滚提交阶段(Commit):如果准备成功,则将多个 Sink 数据实际提交。在 Flink CDC 中,目前只支持简单地将变更日志的数据同步到单个 Sink 上。也就是说,如果 Redis Sink 在消费过程中失败,Flink CDC 会丢失 consumers offset,从上次失败的位置重新开始消费。数据可能会重复。为实现两阶段提交,Flink CDC 需要做如下工作:支持将一个 Table 同时同步到多个 Sink在 Sink 端实现两阶段提交的 prepare 和 commit 阶段Flink 层面提供补偿机制,处理部分 Sink 准备或提交失败的情况这需要 Flink 与 Sink 之间的适配,目前 Redis Sink 还没有实现。但相信在未来的版本中,Flink CDC 会支持多 Sink 输出以及两阶段提交的功能。
xin在这AM 2023-11-27 18:26:25 3 你没实现两阶段提交协议用它,和flink同版本就行https://mvnrepository.com/artifact/com.alibaba.ververica/ververica-connector-redis不可降集群版本就用jdbc的两阶段提交写入redis,此回答整理自钉群“Flink CDC 社区”
是的,目前 Flink CDC 中的 Redis Sink 还没有实现两阶段提交。两阶段提交(Two Phase Commit)的主要目的是确保将数据同时同步到多个 Sink,并处理可能发生的部分 Sink 失败的情况。
具体来说,两阶段提交包括以下两个阶段: 1. 准备阶段(Prepare):将数据提交到多个 Sink。如果任何一个 Sink 准备失败,整个事务将回滚。 2. 提交阶段(Commit):如果准备阶段成功,将多个 Sink 的数据实际提交。
在 Flink CDC 中,目前只支持简单地将变更日志的数据同步到单个 Sink 上。这意味着如果 Redis Sink 在消费过程中发生失败,Flink CDC 会丢失消费者的偏移量,从上次失败的位置重新开始消费。因此,数据可能会出现重复的情况。
要实现两阶段提交,Flink CDC 需要完成以下工作: 1. 支持将一个表同时同步到多个 Sink。 2. 在 Sink 端实现两阶段提交的准备和提交阶段。 3. 在 Flink 层面提供补偿机制,处理部分 Sink 准备或提交失败的情况。
实现这些功能需要 Flink CDC 与 Sink 之间的适配。目前 Redis Sink 还没有实现这些功能。
然而,有一个名为 “ververica-connector-redis” 的开源项目可以用作 Redis Sink,并且支持两阶段提交协议。您可以在 Maven 仓库中找到该项目的相关信息。请注意,使用此项目时需要确保与 Flink 的版本匹配。
很对,Flink CDC 的 Redis Sink 目前还没有实现两阶段提交。
两阶段提交(Two phase commit)的主要作用是:
保证数据在同时同步到多个 Sink 时的一致性
处理可能发生的部分 Sink 失败的情况
具体来说,两阶段提交包括:
准备阶段(Prepare):将数据提交到多个 Sink。如果有任何 Sink 准备失败,则整个事务回滚
提交阶段(Commit):如果准备成功,则将多个 Sink 数据实际提交。
在 Flink CDC 中,目前只支持简单地将变更日志的数据同步到单个 Sink 上。
也就是说,如果 Redis Sink 在消费过程中失败,Flink CDC 会丢失 consumers offset,从上次失败的位置重新开始消费。数据可能会重复。
为实现两阶段提交,Flink CDC 需要做如下工作:
支持将一个 Table 同时同步到多个 Sink
在 Sink 端实现两阶段提交的 prepare 和 commit 阶段
Flink 层面提供补偿机制,处理部分 Sink 准备或提交失败的情况
这需要 Flink 与 Sink 之间的适配,目前 Redis Sink 还没有实现。
但相信在未来的版本中,Flink CDC 会支持多 Sink 输出以及两阶段提交的功能。
你没实现两阶段提交协议用它,和flink同版本就行
https://mvnrepository.com/artifact/com.alibaba.ververica/ververica-connector-redis不可降集群版本就用jdbc的两阶段提交写入redis,此回答整理自钉群“Flink CDC 社区”