第7章,构建数据管道

7.3 Kafka Connect

Connect是Kafka的一部分,它为在Kafka和外部数据存储系统之间移动数据提供了一种可靠且可伸缩的方式。它为连接器插件提供了一组API和一个运行时——Connect负责运行这些插件,它们则负责移动数据。Connect以worker进程集群的方式运行,我们基于worker进程安装连接器插件,然后使用REST API来管理和配置connector,这些worker进程都是长时间持续运行的作业。连接器启动额外的task,有效地利用工作节点的资源,以并行的方式移动大量的数据。数据源的连接器负责从源系统读取数据,并把数据对象提供给worker进程。数据池的连接器负责从worker进程获取数据,并把它们写入目标系统。

~Connect的工作方式,非常重要。

7.3.4 深入理解Connect

worker进程是连接器和任务的“容器”。它们负责处理HTTP请求,这些请求用于定义连接器和连接器的配置。它们还负责保存连接器的配置、启动连接器和连接器任务,并把配置信息传递给任务。如果一个worker进程停止工作或者发生崩溃,集群里的其他worker进程会感知到(Kafka的消费者协议提供了心跳检测机制),并将崩溃进程的连接器和任务重新分配给其他进程。如果有新的进程加入集群,其他进程也会感知到,并将自己的连接器和任务分配给新的进程,确保工作负载的均衡。进程还负责提交偏移量,如果任务抛出异常,可以基于这些偏移量进行重试。
为了更好地理解worker进程,我们可以将其与连接器和任务进行简单的比较。连接器和任务负责“数据的移动”,而worker进程负责REST API、配置管理、可靠性、高可用性、伸缩性和负载均衡。

~更好的理解worker进程的作用。

worker进程的REST API提供了部署和配置管理服务,除此之外,worker进程还提供了偏移量管理服务。连接器只要知道哪些数据是已经被处理过的,就可以通过Kafka提供的API来维护偏移量。
源连接器返回给worker进程的记录里包含了一个逻辑分区和一个逻辑偏移量。它们并非Kafka的分区和偏移量,而是源系统的分区和偏移量。例如,对于文件源来说,分区可以是一个文件,偏移量可以是文件里的一个行号或者字符号;而对于JDBC源来说,分区可以是一个数据表,偏移量可以是一条记录的主键。在设计一个源连接器时,要着重考虑如何对源系统的数据进行分区以及如何跟踪偏移量,这将影响连接器的并行能力,也决定了连接器是否能够实现至少一次传递或者仅一次传递。

~偏移量管理服务,了解这个服务,有助于更好的理解连接器。