目录
介绍
数据系统组成
卡夫卡体系结构
关键组件和相关术语
Zookeeper
卡夫卡内部构件
Windows上的Kafka设置
先决条件
安装文件
执行
参考资料
这是数字时代。到处都是数据,这段时间我们都会听到有关Kafka的信息。我从事的一个项目涉及整个数据系统(带有Java后端),该系统利用Kafka来实现通过各种渠道和部门处理大量数据的功能。在进行处理时,我想到了在Windows中探索设置的方法。因此,本指南可帮助您了解Kafka,并展示Windows环境中数据管道的设置和测试。
Java和Scala中的一个开源项目
Apache Kafka是具有三个主要功能的分布式流平台:
Kafka通常用于将数据流式传输到应用程序,数据湖和实时流分析系统中。
应用程序将消息输入到Kafka服务器上。这些消息可以是计划捕获的任何已定义信息。它以可靠的方式(由于采用分布式Kafka架构)传递给另一个应用程序或服务,以对其进行处理或重新处理。
在内部,Kafka使用数据结构来管理其消息。这些消息具有在此数据结构的单元级别应用的保留策略。保留时间是可配置的——基于时间或基于大小。默认情况下,发送的数据存储168小时(7天)。
通常,将有多个生产者,消费者,集群来处理消息。通过添加更多代理可以轻松完成水平扩展。下图描述了示例架构:
Kafka通过TCP协议在客户端和服务器之间进行通信。有关更多详细信息,请参阅《Kafka协议指南》。
Kafka生态系统提供了REST代理,该代理也允许通过HTTP和JSON轻松集成。
首先,它具有四个关键API:Producer API,Consumer API,Streams API,Connector API
Apache ZooKeeper是一个开放源代码,可帮助构建分布式应用程序。这是用于维护配置信息的集中服务。它承担的职责如下:
Brokers集群中的区分基于ID,其通常是唯一数字。连接到一个代理程序会将客户端引导到整个Kafka群集。它们从生产者接收消息,并允许消费者按主题、分区和偏移量获取消息。
Topic作为一个或多个分区的逻辑组分布在Kafka群集中。分区定义为分布在多个代理中的消息的有序序列。在创建过程中,可以配置每个主题的分区数。
Producers写主题。Consumers阅读主题。
Kafka使用Log数据结构来管理其消息。日志数据结构是一个有序的Segments集合,它是消息的集合。每个段都有帮助查找消息的文件:
Kafka将生产者的记录追加到主题日志的末尾。消费者可以从任何已提交的偏移量中读取数据,并允许他们从他们选择的任何偏移点中读取数据。仅当所有用于分区的ISR写入其日志时,该记录才被视为已提交。
在多个分区中,只有一个领导者,其余的则是要用作备份的副本/跟随者。如果领导者失败,则选择一个ISR作为新领导者。领导者执行对特定主题分区的所有读取和写入。追随者被动地复制领导者。允许消费者仅从领导者分区读取。
分区的引导者和跟随者永远不能驻留在同一节点上。
Kafka还支持log compaction记录。有了它,Kafka将保留记录的最新版本并删除旧版本。这导致了一种精细的保留机制,其中保留了每个密钥的最新更新。
Offset manager负责存储、获取和维护消费者补偿。每个实时代理都有一个抵消管理器实例。默认情况下,使用者配置为使用定期间隔的自动提交策略。或者,使用者可以使用提交API进行手动偏移管理。
Kafka使用特定主题__consumer_offsets来保存消费者补偿。此偏移量记录每个组中每个使用者的读取位置。这有助于消费者在需要时追溯其最后的位置。通过向代理提供补偿,消费者不再依赖ZooKeeper。
引用:
Kafka的较旧版本(0.9版之前)仅在ZooKeeper中存储偏移量,而默认情况下,Kafka的较新版本将偏移量存储在内部Kafka主题__consumer_offsets中
Kafka允许消费者组从主题并行读取数据。组中的所有使用者都具有相同的组ID。在同一时间,组中只有一个使用者可以使用分区中的消息,以保证从分区中读取消息的顺序。使用者可以读取多个分区。
1、ZooKeeper ——使用已经随同Kafka文件一起打包的便捷脚本,获得一个快速且肮脏的单节点ZooKeeper实例。
zookeeper-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\zookeeper.properties
2、Kafka Server——获取单节点Kafka实例。
kafka-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\server.properties
现在,可以创建主题并可以存储消息。我们可以从任何客户端生成和使用数据。我们现在将使用命令提示符。
3、Topic——创建一个名为“testkafka”的主题
kafka-topics.bat --create --bootstrap-server localhost:9092
--replication-factor 1 --partitions 1 --topic testkafka
4、Producer——设置发送消息到服务器
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic testkafka
5、Consumer——设置为从服务器接收消息
kafka-console-consumer.bat --bootstrap-server localhost:9092
--topic testkafka --from-beginning
6、Check/Observe ——幕后的一些关键变更
注意:如果要选择Zookeeper来存储主题而不是Kafka服务器,则需要以下脚本命令:
kafka-topics.bat --create --zookeeper localhost:2181
--replication-factor 1 --partitions 1 --topic testkafka
kafka-topics.bat --list --zookeeper localhost:2181
通过以上操作,我们可以使用Kafka设置查看生产者发送的消息和消费者接收的消息。
当我尝试设置Kafka时,我在路上遇到了几个问题。我已经记录了它们以供参考。如果其他人遇到类似问题,这也应该有所帮助:故障排除:Windows上的Kafka设置。
从此处下载适用于Windows的完整修改后的安装文件:Github:Kafka演示安装文件