暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

flink cdc + oracle +Doris 构建数据实时同步平台

原创 M. 2024-11-15
901

应用架构文档

1. 概述

本应用的目标是提供一个高效、灵活的数据同步解决方案,能够将任意类型的源数据库中的指定表同步到目标数据库中。通过简单的配置,应用可以实现数据的实时同步,并支持多种数据库之间的数据传输,包括但不限于 Oracle 和 Doris 数据库。底层数据同步依赖于 Flink CDC 技术,数据流通过 Kafka 管道传输,实现跨数据库的自动化同步和处理。

2. 架构设计目标

  • 数据实时同步:通过 Flink CDC 等手段实现监控源数据库表的变更,并能够将捕捉到的数据按照统一的格式写入到Kafka的指定topic。
  • 多源数据业务支持
  • 灵活性:应用能够支持多种品牌、类型的数据库,并能够根据标准接口的实现来触发指定业务逻辑
  • 高可用性和容错性:利用flink/kafka集群来实现高可用。利用flink的checkpoint机制,kafka的offset等机制来保证应用意外中断恢复后的数据一致性。
  • 可扩展性:系统支持通过水平扩展来处理更多的源数据库和目标数据库,支持复杂的数据同步需求。

3. 业务功能设计

3.1 数据同步功能

  • 数据捕获:使用 Flink CDC 捕获源数据库表的变化,包括插入、更新和删除操作。
  • 数据传输:在成功捕捉到数据后,将转化为标准格式的数据写入到Kafka,为下游应用提供数据支撑。
  • 数据业务触发:下游应用在各自监控的topic中识别到数据后,按照业务逻辑来触发指定逻辑。

3.2 日志记录与监控

  • 日志记录:每次数据同步操作都会记录详细的日志信息,包括同步成功与否、同步时间、数据内容等,便于审计和问题追踪。
  • 指标计算:在同步任务中计算各种指标并利用flink Metrics来实时计算指标。
  • 实时监控:利用Prometheus监控flink,kafka,应用等集群的服务器状态,kafka数据积压情况以及日志中异常情况等

3.3 错误处理

  • 自动重试:当数据同步过程中发生错误时,系统会根据配置的重试策略,自动重新尝试该次数据同步,确保数据最终到达目标数据库。
  • 告警机制:如果同步任务多次重试后依然失败,系统将发送告警通知,以便运维人员进行手动干预。

4. 系统质量特性

4.1 功能依从性

该系统严格遵循配置的同步规则,确保源数据库中的数据变更可以被可靠地同步到目标数据库。业务逻辑的执行依赖于以下几部分:

  • Flink CDC 数据捕获:监控源数据库的指定表变化。
  • Kafka 消息传递:源数据变化通过 Kafka 管道进行实时传输。
  • Flink 消费与业务处理:Flink 消费端从 Kafka 中读取消息,并根据配置执行业务逻辑,如将数据写入目标数据库并记录日志。
  • 配置驱动的架构:所有数据同步的行为均由配置文件驱动,确保用户的需求能够无缝转化为执行逻辑。
  • 可定制的业务逻辑:同步的过程中可以通过编写自定义处理逻辑,将业务需求灵活嵌入数据同步过程中。

4.2 可用性

为确保应用在大规模环境中的可用性,系统设计中考虑了以下几点:

  • 冗余设计:通过 Kafka 的高可用性机制和 Flink 的容错恢复机制,在节点出现故障时,仍能保证数据不丢失。
  • 负载均衡:通过 Flink 并行任务处理 Kafka 中的消息,确保数据处理的负载能够均匀分布,提高整体处理效率。

4.3 容错性

系统具备健壮的容错机制,包括:

  • Flink 的检查点机制:在作业失败或异常退出时,Flink 能够自动从最近的检查点恢复,保证数据处理的连续性和一致性。
  • Kafka 的消息持久化:Kafka 提供了消息的持久化存储,确保在出现网络或节点故障时,数据不会丢失。

4.4 易恢复性

通过以下机制提高系统的易恢复性:

  • 自动重试机制:系统在同步过程中出现问题时,能够通过配置的自动重试机制,重新进行数据同步。
  • 任务恢复机制:Flink 具备从故障中自动恢复的能力,保证作业在意外中断后能够恢复至正常状态。5. 功能依从性

该系统功能完全依从于用户定义的配置规则。用户通过配置源数据库、目标数据库、同步表、以及具体的业务逻辑,系统能够根据这些配置执行准确的同步操作。以下几点保证了功能依从性:

  • 配置驱动的架构:所有数据同步的行为均由配置文件驱动,确保用户的需求能够无缝转化为执行逻辑。
  • 可定制的业务逻辑:同步的过程中可以通过编写自定义处理逻辑,将业务需求灵活嵌入数据同步过程中。

6. 可用性

系统通过以下方式确保高可用性:

  • 高可用架构:使用 Kafka 和 Flink 的分布式架构设计,确保即使在某些节点发生故障时,系统仍然能够正常运行。
  • 水平扩展能力:通过增加 Flink 并行任务的数量,系统能够扩展以处理更多的数据和更高的吞吐量。

7. 容错性

容错机制在设计中是重点考虑的部分,包括:

  • 任务重启机制:Flink 具有内置的重启机制,当发生异常时,作业会自动重新启动。
  • 数据丢失保护:通过 Kafka 持久化队列保证消息不丢失,即使在 Flink 任务重启时,数据也能被重新消费。

8. 易恢复性

为提高系统的易恢复性,设计了以下机制:

  • 检查点与保存点:Flink 提供了检查点(Checkpoint)机制和保存点(Savepoint)机制,可以让作业在故障发生时快速恢复,且恢复时不会丢失数据。
  • 自动故障恢复:当某个任务节点发生故障时,Flink 的作业管理器会自动分配新的资源,重新执行故障节点的任务,确保整个同步流程不中断。

9. 总结

本应用通过使用 Flink CDC、Kafka 等技术,实现了灵活、高效、稳定的数据同步系统。系统在设计时充分考虑了业务需求、性能和稳定性,确保了数据的准确传输和处理,并能够应对大规模环境中的各类故障和恢复需求。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论