目录

介绍

数据系统组成

卡夫卡体系结构

关键组件和相关术语

Zookeeper

卡夫卡内部构件

Windows上的Kafka设置

先决条件

安装文件

执行

参考资料


这是数字时代。到处都是数据,这段时间我们都会听到有关Kafka的信息。我从事的一个项目涉及整个数据系统(带有Java后端),该系统利用Kafka来实现通过各种渠道和部门处理大量数据的功能。在进行处理时,我想到了在Windows中探索设置的方法。因此,本指南可帮助您了解Kafka,并展示Windows环境中数据管道的设置和测试。

  • GitHub下载更新的Kafka演示设置文件

JavaScala中的一个开源项目

介绍

Apache Kafka是具有三个主要功能的分布式流平台

  • 消息系统 ——发布-订阅记录流
  • 可用性和可靠性 ——以容错的持久方式存储记录流
  • 可扩展和实时——处理记录流

数据系统组成

Kafka通常用于将数据流式传输到应用程序数据湖和实时流分析系统中

应用程序将消息输入到Kafka服务器上。这些消息可以是计划捕获的任何已定义信息。它以可靠的方式(由于采用分布式Kafka架构)传递给另一个应用程序或服务,以对其进行处理或重新处理。

在内部,Kafka使用数据结构来管理其消息。这些消息具有在此数据结构的单元级别应用的保留策略。保留时间是可配置的——基于时间或基于大小。默认情况下,发送的数据存储168小时(7天)。

卡夫卡体系结构

通常,将有多个生产者,消费者,集群来处理消息。通过添加更多代理可以轻松完成水平扩展。下图描述了示例架构:

Kafka通过TCP协议在客户端和服务器之间进行通信。有关更多详细信息,请参阅《Kafka协议指南》。

Kafka生态系统提供了REST代理,该代理也允许通过HTTP和JSON轻松集成。

首先,它具有四个关键API:Producer API,Consumer API,Streams API,Connector API

关键组件和相关术语

  • Messages/Records ——对象的字节数组。包含键、值和时间戳
  • Topic ——类别中的消息提要
  • Producer ——将消息发布到Kafka主题的过程
  • Consumer ——订阅主题并处理已发布消息的主题的过程
  • Broker——它主持主题。也称为Kafka Server或Kafka Node
  • Cluster ——由一个或多个代理组成
  • Zookeeper ——保持集群状态(代理、主题、消费者)
  • Connector ——将主题连接到现有应用程序或数据系统
  • Stream Processor ——使用主题的输入流,并生成输出主题的输出流
  • ISR (同步副本)——复制以支持故障转移
  • Controller——集群中的代理,负责维护所有分区的领导者/从属者关系

Zookeeper

Apache ZooKeeper是一个开放源代码,可帮助构建分布式应用程序。这是用于维护配置信息的集中服务。它承担的职责如下:

  • Broker 状态——维护活动代理的列表以及它们属于哪个集群
  • Topics 已配置——维护所有主题的列表,每个主题的分区数量,所有副本的位置,谁是首选领导者,分区的ISR列表
  • Controller 选举 ——每当节点关闭时选择一个新的控制器。另外,请确保在任何给定时间只有一个控制器
  • ACL 信息 ——维护所有主题的访问控制列表(ACL)

卡夫卡内部构件

Brokers集群中的区分基于ID,其通常是唯一数字。连接到一个代理程序会将客户端引导到整个Kafka群集。它们从生产者接收消息,并允许消费者按主题、分区和偏移量获取消息。

Topic作为一个或多个分区的逻辑组分布在Kafka群集中。分区定义为分布在多个代理中的消息的有序序列。在创建过程中,可以配置每个主题的分区数。

Producers写主题。Consumers阅读主题。

Kafka使用Log数据结构来管理其消息。日志数据结构是一个有序的Segments集合,它是消息的集合。每个段都有帮助查找消息的文件:

  1. 日志文件——存储消息
  2. 索引文件——将消息偏移量及其起始位置存储在日志文件中

Kafka将生产者的记录追加到主题日志的末尾。消费者可以从任何已提交的偏移量中读取数据,并允许他们从他们选择的任何偏移点中读取数据。仅当所有用于分区的ISR写入其日志时,该记录才被视为已提交

在多个分区中,只有一个领导者,其余的则是要用作备份的副本/跟随者。如果领导者失败,则选择一个ISR作为新领导者。领导者执行对特定主题分区的所有读取和写入。追随者被动地复制领导者。允许消费者仅从领导者分区读取。

分区的引导者和跟随者永远不能驻留在同一节点上。

Kafka还支持log compaction记录。有了它,Kafka将保留记录的最新版本并删除旧版本。这导致了一种精细的保留机制,其中保留了每个密钥的最新更新。

Offset manager负责存储、获取和维护消费者补偿。每个实时代理都有一个抵消管理器实例。默认情况下,使用者配置为使用定期间隔的自动提交策略。或者,使用者可以使用提交API进行手动偏移管理。

Kafka使用特定主题__consumer_offsets来保存消费者补偿。此偏移量记录每个组中每个使用者的读取位置。这有助于消费者在需要时追溯其最后的位置。通过向代理提供补偿,消费者不再依赖ZooKeeper。

引用:

Kafka的较旧版本(0.9版之前)仅在ZooKeeper中存储偏移量,而默认情况下,Kafka的较新版本将偏移量存储在内部Kafka主题__consumer_offsets

Kafka允许消费者组从主题并行读取数据。组中的所有使用者都具有相同的组ID。在同一时间,组中只有一个使用者可以使用分区中的消息,以保证从分区中读取消息的顺序。使用者可以读取多个分区。

Windows上的Kafka设置

先决条件

  • Java SE运行时环境

    • 系统具有:jre-8u261-windows-x64.exe
  • Kafka
    • 示例应用程序使用:Scala 2.12 – kafka_2.12-2.5.0.tgz
  • 任何从* .tgz解压缩文件的解压缩工具
    • 我有Mac可以通过双击将其提取

安装文件

  1. 安装JRE——默认设置应该可以
  2. C:\Installs中解压缩Kafka文件(可以选择任意位置)。Kafka数据管道设置所需的所有脚本文件都位于:C:\Installs\kafka_2.12-2.5.0\bin\windows
  3. 根据Windows需要更改配置
    • 设置Kafka日志—— 在C:\Installs\kafka_2.12-2.5.0位置创建一个文件夹'logs'
    • 在Kafka配置文件中将此日志文件夹位置设置为C:\Installs\kafka_2.12-2.5.0\config\server.properties作为log.dirs =C:\Installs\kafka_2.12-2.5.0\logs
    • 设置Zookeeper数据——在C:\Installs\kafka_2.12-2.5.0位置创建一个文件夹“data
    • 在Zookeeper配置文件中将此数据文件夹位置设置为C:\Installs\kafka_2.12-2.5.0\config\zookeeper.properties作为dataDir =C:\Installs\kafka_2.12-2.5.0\data

执行

1、ZooKeeper ——使用已经随同Kafka文件一起打包的便捷脚本,获得一个快速且肮脏的单节点ZooKeeper实例。

  • 打开命令提示符并移至以下位置:C:\Installs\kafka_2.12-2.5.0\bin\windows
  • 执行脚本:
zookeeper-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\zookeeper.properties
  • ZooKeeper从localhost:2181开始。保持运行。

2、Kafka Server——获取单节点Kafka实例。

  • 打开另一个命令提示符,然后移至以下位置:C:\Installs\kafka_2.12-2.5.0\bin\windows
  • ZooKeeper已在属性文件中配置为zookeeper.connect = localhost:2181
  • 执行脚本:
kafka-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\server.properties
  • Kafka服务器从localhost:9092启动。保持运行。

现在,可以创建主题并可以存储消息。我们可以从任何客户端生成和使用数据。我们现在将使用命令提示符。

3、Topic——创建一个名为“testkafka”的主题

  • 给定一个实例节点,将复制因子设为1,将分区设为1
  • 打开另一个命令提示符,然后移至以下位置C:\Installs\kafka_2.12-2.5.0\bin\windows
  • 执行脚本:
kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic testkafka
  • 执行脚本以查看创建的主题:
kafka-topics.bat --list --bootstrap-server localhost:9092

  • 保持命令提示符处于打开状态,以防万一。

4、Producer——设置发送消息到服务器

  • 打开另一个命令提示符,然后移至以下位置:C:\Installs\kafka_2.12-2.5.0\bin\windows
  • 执行脚本:
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic testkafka
  • 它将显示“>”作为提示键入消息。输入:“Kafka demo – Message from server”。

  • 使命令提示符保持打开状态。我们将回到它来推送更多消息。

5、Consumer——设置为从服务器接收消息

  • 打开另一个命令提示符,然后移至以下位置:C:\Installs\kafka_2.12-2.5.0\bin\windows
  • 执行脚本:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic testkafka --from-beginning
  • 您将在此命令提示符窗口中看到生产者已发送的消息——“ Kafka演示——来自服务器的消息”。

  • 返回到Producer命令提示符并键入任何其他消息,以查看它们实时显示在消费者命令提示符中:

6、Check/Observe ——幕后的一些关键变更

  • 在主题下创建的文件 ——它们跟踪为给定主题推送的消息:

  • 日志文件中的数据——生产者推送的所有消息都存储在这里:

  • Kafka中存在的主题 ——消费者一旦开始从主题中读取消息,__consumer_offsets就会自动创建为主题:

注意:如果要选择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的完整修改后的安装文件:GithubKafka演示安装文件

参考资料

  • https://kafka.apache.org
  • https://cwiki.apache.org/confluence/display/KAFKA
  • https://docs.confluent.io/2.0.0/clients/consumer.html

理解卡夫卡的初学者指南相关推荐

  1. 卡夫卡详解_卡夫卡概念

    卡夫卡详解 Apache Kafka is an open-source distributed event streaming platform used by thousands of compa ...

  2. 卡夫卡如何分区_通过分区在卡夫卡实现订单担保人

    卡夫卡如何分区 Kafka最重要的功能之一是实现消息的负载平衡,并保证分布式集群中的排序,否则在传统队列中是不可能的. 首先让我们尝试了解问题陈述 让我们假设我们有一个主题,其中发送消息,并且有一个消 ...

  3. 卡夫卡与风暴:卡夫卡和风暴的明智比较

    1.卡夫卡与风暴的区别 今天,在本文中,"Apache Kafka vs Storm:Storm和Kafka之间的差异"我们将看到Kafka和Storm的完整比较.那么,让我们从K ...

  4. 卡夫卡详解_卡夫卡快速入门

    卡夫卡详解 This article will teach you the basics of a fast-growing and reliable streaming platform that ...

  5. 卡夫卡 it_解决我怪异的卡夫卡再平衡问题

    卡夫卡 it Imagine working on your Kafka Streams application. You deploy it to Kubernetes, wait a few ho ...

  6. flink 卡夫卡_卡夫卡–一次语义学

    flink 卡夫卡 在分布式环境中,故障是很常见的情况,可以随时发生. 在Kafka环境中,代理可能崩溃,网络故障,处理故障,发布消息时失败或无法使用消息等.这些不同的场景引入了不同类型的数据丢失和重 ...

  7. 卡夫卡队列_卡夫卡编年史队列基准

    卡夫卡队列 总览 最近,我被要求比较<卡夫卡>和<编年史>的性能. 没有两个产品是完全一样的,要进行公平的比较并不容易. 我们可以尝试运行类似的测试,看看我们得到了什么结果. ...

  8. 卡夫卡编年史队列基准

    总览 最近,我被要求比较<卡夫卡>和<编年史>的性能. 没有两个产品是完全一样的,要进行公平的比较并不容易. 我们可以尝试运行类似的测试,看看会得到什么结果. 该测试基于Apa ...

  9. 【卡夫卡的岛上书店】:一个利用 vuepress 的主题 vuepress-theme-reco 以及 vuepress-theme-vdoing 搭建自己的静态博客

    说明 主题是用了vuepress-theme-reco@1.6.1 以及vuepress-theme-vdoing@1.7.2,自己在此基础上进行了两款主题的融合,以及部分功能的改造.个性化的功能开发 ...

最新文章

  1. 国产岚图入局高端智能电动车,对标特斯拉,放话一年内量产
  2. Flask项目支持https
  3. 杂谈人工智能说大数据
  4. nginx报错:nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log“ failed (2: N
  5. H5 input输入限制最大位数,和调用小键盘需求发生冲突的解决办法
  6. 移动端1px像素实现技巧 - 讲解篇
  7. 你会处理圆周率吗?----- Python操作文件应用举例
  8. Spring知识点简介
  9. Mac Sublime Text 3插件安装
  10. 解决同一条sql在pl/sql工具中执行很快,在程序中却很慢
  11. 勒索病毒最新变种for linux,Satan勒索病毒新变种卷土重来 安全狗提醒您注意
  12. C语言小项目----图书馆管理系统
  13. Linux下终端的快捷键及建立打开终端的快捷键
  14. 非度量多维排列 NMDS (Non-metric multidimensional scaling)分析
  15. Win11谷歌的IDM插件用不了怎么解决?如何解决win11idm插件问题
  16. 《生如夏花》——泰戈尔
  17. UI设计--蓝湖切图
  18. 关于 *.csproj: 找不到此项目类型所基于的应用程序 的解决方案
  19. 图神经网络和常见的神经网络的区别
  20. revit中在三维视图下显示房间文字和“房间集成”

热门文章

  1. mysql binary 查询_MYSQL的binary解决mysql数据大小写敏感问题 《转载》
  2. 广西专业技术人员职称个人版_「职称评审」机械工程专业技术人员如何写职称论文?...
  3. python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示
  4. 三八妇女节PSD分层海报,来啦!
  5. 直观简洁,轻易吸睛!促销海报模板
  6. C4D模型库!你想要的模型这里都有
  7. 极简主义APP界面UI设计实例模板,不简单!
  8. spring+springmvc+mybatis实现图书管理系统_Spring、SpringMVC、Mybatis自学视频分享
  9. qcow2 磁盘在线扩容方法
  10. 在英特尔架构服务器上构建基于矢量包处理(VPP)的快速网络协议栈