消息队列 Kafka 简介
Apache Kafka是一个分布式流平台,作为互联网领域不可或缺的消息组件,在全球获得了广泛的应用。在使用过程中,Kafka一般被作为消息流转的核心枢纽,上下游系统通过Kafka实现异步,削峰填谷。在大数据处理和实时数据处理领域Kafka也是不可替代的组件。
Kafka使用非常广泛,在有些领域使用已经非常成熟,如日志收集,大数据处理,数据库等领域。Kafka跟上下游也有标准化的对接模块,如日志收集有Flume,Filebeat,Logstash,大数据处理有spark,flink等组件。同时在一些小众的领域则没有现成的工具可以直接对接,如对接某个小众的数据库,或者用户自己定制化的系统。这时一般的对接方法是自行开发Kafka生产消费程序对接。
在不同系统对接时通常会遇到以下问题:
- 公司的不同团队对同一个系统有对接需求,各自开发重复造轮子,且实现方式不一,升级运维成本高。
- 各子系统由不同的团队开发,因此,各系统中的数据在内容和格式上,存在天然的不一致性,需要进行格式处理,以消除各系统数据之间格式的不同。
基于Kafka使用的广泛度和上下游系统的多样性考虑,Kafka推出了内置的上下游系统对接框架Kafka Connect。
Kafka Connect 介绍
Kafka Connect是一个用于将数据流输入和输出Kafka的框架。下面介绍connector的一些主要概念:
- Connectors:通过管理task来协调数据流的高级抽象
- Tasks:如何将数据复制到Kafka或从Kafka复制数据的实现
- Workers:执行Connector和Task的运行进程
- Converters:用于在Connect和外部系统发送或接收数据之间转换数据的代码
- Transforms:更改由连接器生成或发送到连接器的每个消息的简单逻