深入拆解消息队列 47 讲
许文强
前腾讯云 Kafka 技术负责人
5385 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
深入拆解消息队列 47 讲
15
15
1.0x
00:00/00:00
登录|注册

40|连接器:如何以MQ为核心搭建数据集成架构?

你好,我是文强。
这节课我们来聊聊连接器。在消息队列中,连接器也称为 Connector,它的作用是把不同数据源中的数据导入到消息队列,或者把消息队列中的数据导出到下游的各种存储引擎。连接器对于用户的价值是,可以很方便地将数据导入、导出消息队列。
听起来,它和前面两节课中讲的基于 Serverless 实现流式计算和事件驱动架构的作用很类似,从功能上看,Flink 或 Spark 也能实现。那为什么还有连接器这个概念呢?它的价值是什么?
带着这两个问题,我们开始本节课程,先来详细看一下什么是连接器。

连接器是什么

从技术上来看,连接器中的“连接”指的是数据的连接,即把数据从某个地方搬到另外一个地方。所以连接器就是指将数据从源端搬到目标端的组件。或者说只要具备数据连接功能的组件,就可以称为连接器。
同样的,消息队列连接器的功能也是把数据从源端搬到目标端。但和普通连接器不同的是,消息队列连接器的其中一端一定是消息队列。
如上图所示,业界主流消息队列 Kafka、RocketMQ、Pulsar 都支持连接器的概念,组件名称分别是 Kafka Connector、RocketMQ Connector、Pulsar IO。从功能上来看,消息队列连接器分为源连接器(Source)目标连接器(Sink),作用分别是将数据源的数据导入到消息队列和把消息队列中的数据导出到下游的存储。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了如何以消息队列(MQ)为核心搭建数据集成架构。首先介绍了连接器的作用和价值,以及数据集成和连接器的关系。通过比较典型数据集成组件和消息队列连接器两种方案的差异,阐述了消息队列连接器的技术特点。文章还详细分析了消息队列连接器的底层原理,包括分布式任务调度平台的开发和设计、各种源、目标连接器的开发以及简单的数据清洗能力。此外,还介绍了业界主流消息队列连接器的具体实现,以Kafka Connector为例,解析了其系统架构和RESTful API。通过示例展示了Kafka SourceConnector的功能和使用案例。 连接器是将数据从源端搬到目标端的组件,而消息队列连接器的其中一端一定是消息队列。数据集成是将数据从数据源搬到数据目标的过程,消息队列连接器只是数据集成概念下的一种具体实现方案。消息队列连接器需要把数据先存储到消息队列中缓存,然后根据需要再从消息队列中消费数据,导入到下游,适合数据源和数据目标是一对多的场景。消息队列连接器由Runtime、Connector、Transforms三部分组成,其中Runtime是一个分布式任务调度集群,Connector表示将数据导入、导出消息队列,而Transforms通过配置化的参数完成对数据的清洗和转换等操作。 主流消息队列如Kafka、RocketMQ、Pulsar都支持连接器的概念,具备分布式的任务调度平台,并在平台上执行分布式的Source和Sink任务。尽管像Spark/Flink、Mesos等分布式任务调度平台具备任务的运行、调度、启停能力,但主流消息队列仍独立开发Runtime,这是因为消息队列连接器需要特定的数据缓存和消费模型,以应对一对多的数据源和数据目标场景。 总的来说,本文全面介绍了连接器的概念、数据集成和连接器的关系,以及消息队列连接器的底层原理,适合读者快速了解数据集成架构的技术特点。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • Geek_ec80d2
    好一点的数据集成工具都是商业化的产品,开源的flink CDC导库不能保证数据可靠性。

    作者回复: 是的,非常同意。不止 flink CDC,还有debezium 也存在类似的问题。在我看来,数据集成工具是一个细致活,它的核心竞争力不是功能实现,而是稳定性和可靠性。 以 MySQL Binlog 订阅为例,如何处理各种边界场景(比如上游 binlog 丢失损坏,变更等等),以及如何解决数据审计问题,即如何保证数据不丢失,丢失的时候可以通过审计系统发现丢失了哪些数据,为何丢失。 从实际落地来看,一般核心业务的数据集成工具都需要使用商业化产品。非核心业务的可以用开源产品。

    2023-09-26归属地:北京
  • Geek_ec80d2
    1、是在讲数据库的导库,还是讲数据库的CDC?方法和实现也不一样。 2、另外,据我所知,消息中间件的sink、source并没有数据清理部分。
    2023-09-26归属地:北京
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部