当前位置:首页 > 科技  > 软件

Kafka:介绍和内部工作原理

来源: 责编: 时间:2023-09-28 10:07:38 179观看
导读展示Kafka工作方式的简单架构。什么是Kafka?为什么我们要使用它?它是消息队列吗?它是一个 分布式流处理平台或分布式 提交日志。Kafka通常用于实时流数据管道,即在系统之间传输数据,构建不断流动的数据转换系统和构建事件

WXI28资讯网——每日最新资讯28at.com

展示Kafka工作方式的简单架构。WXI28资讯网——每日最新资讯28at.com

什么是Kafka?为什么我们要使用它?它是消息队列吗?

它是一个 分布式流处理平台或分布式 提交日志。WXI28资讯网——每日最新资讯28at.com

Kafka通常用于实时流数据管道,即在系统之间传输数据,构建不断流动的数据转换系统和构建事件驱动的系统。WXI28资讯网——每日最新资讯28at.com

它确实可以充当消息队列,但不仅限于此。它可以充当FIFO队列、发布/订阅消息系统、实时流处理平台。由于Kafka的持久性存储能力,甚至可以用作数据库。WXI28资讯网——每日最新资讯28at.com

那么从上面的定义中,什么是分布式流处理和提交日志?

Kafka作为一个由一个或多个节点组成的集群工作,这些节点可以位于不同的数据中心,我们可以将数据/负载分布到Kafka集群中的不同节点,它具有固有的可扩展性、可用性和容错性。WXI28资讯网——每日最新资讯28at.com

Kafka将数据存储为一系列连续的记录,可以以不同的方法进行处理。WXI28资讯网——每日最新资讯28at.com

当您将数据推送到Kafka时,它会将它们附加到记录流中,就像将日志附加到日志文件中一样。WXI28资讯网——每日最新资讯28at.com

让我们开始...

为了理解这一点,让我们深入研究关键主题:WXI28资讯网——每日最新资讯28at.com

1.消息

  • 消息是Kafka的原子数据单位。
  • 您可以推送字符串、整数、不同架构的JSON以及其他任何内容,但通常将不同类型的消息推送到不同的主题中。
  • 可以使用一个键(Key),它只是一些元数据,用于确定目标分区。

2.主题

我们可以将主题视为Kafka中的消息的逻辑类别,它们是相同类型数据的流。WXI28资讯网——每日最新资讯28at.com

3.分区

WXI28资讯网——每日最新资讯28at.com

Image.jpegWXI28资讯网——每日最新资讯28at.com

  • 这基本上是分片技术,是Kafka的扩展能力背后的概念。
  • 分区是使消息能够并行分布在集群中的多个代理上的机制。使用这种并行性方法,Kafka可以同时支持多个消费者和生产者的线性扩展。这种分区方法允许消费者和生产者的线性扩展。
  • 当我们将主题的数据拆分为多个流时,我们称所有这些较小的流为该主题的“分区”。
  • 系统的性能还取决于设置分区的方式。
  • 消息的偏移量是该消息的数组索引。图中块上的数字表示偏移量,第一个块位于第0个偏移量处,最后一个块位于(n-1)个偏移量处。

4.生产者

(1) 将消息发布到Kafka主题的Kafka客户端。WXI28资讯网——每日最新资讯28at.com

生产者用于决定将消息发送到哪个分区。根据不同的配置和参数,生产者决定目标分区。WXI28资讯网——每日最新资讯28at.com

让我们检查不同的情况:WXI28资讯网——每日最新资讯28at.com

  • 未指定键:生产者将随机决定分区,并尝试平衡所有分区上的消息总数。
  • 指定键:生产者使用一致性哈希[1]将键映射到分区。一致性哈希是一种哈希机制,在相同的键上始终生成相同的哈希值,它最小化了重新哈希情况下键的重新分布。
  • 指定分区:您也可以硬编码目标分区。
  • 自定义分区逻辑:我们可以根据分区可以决定的一些规则编写规则。

(2) 您可以以3种方式将消息发送到Kafka。WXI28资讯网——每日最新资讯28at.com

  • 发送并忘记 — 我们发送消息到Kafka代理并忘记它。由于Kafka是高可用的,成功的机会很大。
  • 同步发送 — 您希望等待所有感兴趣的消费者完成您希望它们完成的任何操作
  • 异步发送 — 您不希望等待所有感兴趣的消费者完成您希望它们完成的任何操作

我们还可以在将消息发送到代理之前在生产者上配置特性。WXI28资讯网——每日最新资讯28at.com

为了获得更好的性能,我们可以使用Avro序列化/反序列化器。WXI28资讯网——每日最新资讯28at.com

5.消费者

消费者以有序的方式从分区中读取消息。WXI28资讯网——每日最新资讯28at.com

每次消费者读取一条消息时,它都会将偏移值存储到Kafka或Zookeeper上,表示它是消费者读取的最后一条消息。WXI28资讯网——每日最新资讯28at.com

因此,如果消费者节点崩溃,它可以恢复到上次读取的位置。此外,如果在任何时候消费者需要回到过去并读取旧消息,它只需重置偏移位置即可。WXI28资讯网——每日最新资讯28at.com

(1) 轮询循环:WXI28资讯网——每日最新资讯28at.com

您可以配置分区分配策略。WXI28资讯网——每日最新资讯28at.com

  • 范围:消费者获取连续的分区
  • 轮询:轮询分配器列出了所有可用的分区和所有可用的

尝试在重新平衡时最小化影响,保持大部分分配不变,但允许协作重新平衡批处理大小。我们可以配置每次轮询调用返回多少条记录和多少数据。WXI28资讯网——每日最新资讯28at.com

(2) 提交偏移量:WXI28资讯网——每日最新资讯28at.com

在读取消息时,我们可以更新消费者的偏移位置,这称为提交偏移量。可以启用自动提交,或者应用程序可以显式地提交偏移量。这可以同步和异步两种方式完成。WXI28资讯网——每日最新资讯28at.com

6.消费者组

一组消费者一起工作,从一个主题中读取消息。WXI28资讯网——每日最新资讯28at.com

1扇出交换: 可以由多个消费者组订阅单个主题。WXI28资讯网——每日最新资讯28at.com

一个实时示例是OTP发送服务,可以在号码上发送OTP,也可以发送到电子邮件。WXI28资讯网——每日最新资讯28at.com

WXI28资讯网——每日最新资讯28at.com

Otp示例WXI28资讯网——每日最新资讯28at.com

1.订单保证: 一个分区不能由同一个消费者组中的多个消费者读取。这由消费者组启用,只有消费者组中的一个消费者可以从单个分区读取。WXI28资讯网——每日最新资讯28at.com

WXI28资讯网——每日最新资讯28at.com

在这里,生产者生成6条消息。每条消息都是键值对,假设键“A”的值为“1”,“C”的值为“1”,“B”的值为“1”,“C”的值为“2”……“B”的值为“2”。WXI28资讯网——每日最新资讯28at.com

我们的主题有3个分区,由于一致性哈希,具有相同键的消息始终进入同一分区,因此所有键为“A”的消息都会在一起分组,键为B和C的消息也是如此。WXI28资讯网——每日最新资讯28at.com

现在,由于每个分区只有一个消费者,它们只按顺序接收消息。因此,消费者将在A2之前接收A1,在B2之前接收B1,因此保持了顺序。WXI28资讯网——每日最新资讯28at.com

因此,对于3个分区,您可以最多拥有3个消费者,如果有4个消费者,一个消费者将处于空闲状态。但对于3个分区,您可以有2个消费者,然后一个消费者将从一个分区读取,另一个消费者将从两个分区读取。WXI28资讯网——每日最新资讯28at.com

7.代理

单个Kafka服务器。WXI28资讯网——每日最新资讯28at.com

代理接收来自生产者的消息,为它们分配偏移量,然后将它们提交到分区日志,基本上是将数据写入磁盘,这赋予了Kafka其持久性特性。WXI28资讯网——每日最新资讯28at.com

8.集群

由多个代理节点协同工作以提供可扩展性、可用性和容错性的集群。集群中的一个代理充当控制器,负责将分区分配给代理。WXI28资讯网——每日最新资讯28at.com

当一个分区被复制到3个代理时,其中一个代理将充当该分区的领导者,其余两个将成为追随者。WXI28资讯网——每日最新资讯28at.com

数据始终写入领导者代理,然后复制到追随者。通过这种方式,我们既不会丢失数据,也不会丢失集群的可用性,如果领导者崩溃,将选举出另一个领导者。WXI28资讯网——每日最新资讯28at.com

让我们深入一些编程内容:

  • 创建一个主题,创建该主题的5个分区,并将所有5个主题的数据复制到总共3个节点。
  • kafka-topics — create — zookeeper zookeeper:2181 — topic applog — partitions 5 — replication-factor 3

Zookeeper

在集群中多次听到这个术语,让我们看看它是什么?WXI28资讯网——每日最新资讯28at.com

Zookeeper作为Kafka的中央配置和共识管理系统。它跟踪代理、主题和分区分配、领导者选举,基本上是有关集群的所有元数据。WXI28资讯网——每日最新资讯28at.com

结束语

Kafka是一款出色的软件,具有丰富的功能,可以在各种用例中使用。Kafka非常适合现代分布式系统,因为它是通过设计分布式的。它最初由LinkedIn创建,目前由Confluent维护。像Uber、Netflix、Activision、Spotify、Slack、Pinterest、Coursera等顶级科技公司都在使用它。我们了解了Kafka的核心概念,以帮助您入门。还有很多其他东西,比如Kafka Stream API或kSql,由于时间有限,我们没有讨论。WXI28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-11837-0.htmlKafka:介绍和内部工作原理

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 如何使用Hadoop和MapReduce进行数据处理?

下一篇: 水印艺术创造:逐步学习Python中的添加水印精华

标签:
  • 热门焦点
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • 《英雄联盟》夏季赛总决赛今日开打!JDG对阵LNG首发名单来了 Knight:准备三连冠

    《英雄联盟》夏季赛总决赛今日开打!JDG对阵LNG首发名单来了 Knight:准备三连冠

    8月5日消息,今日17:00,《英雄联盟》2023LPL夏季赛总决赛将正式开打,由JDG对阵LNG。对两支队伍来说,这场比赛不仅要争夺夏季赛冠军,更要决定谁才是LPL赛区一
  • JavaScript 混淆及反混淆代码工具

    JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • Java NIO内存映射文件:提高文件读写效率的优秀实践!

    Java NIO内存映射文件:提高文件读写效率的优秀实践!

    Java的NIO库提供了内存映射文件的支持,它可以将文件映射到内存中,从而可以更快地读取和写入文件数据。本文将对Java内存映射文件进行详细的介绍和演示。内存映射文件概述内存
  • 如何通过Python线程池实现异步编程?

    如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 年轻人的“职场羞耻感”,无处不在

    年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 三星获批量产iPhone 15全系屏幕:苹果史上最惊艳直屏

    三星获批量产iPhone 15全系屏幕:苹果史上最惊艳直屏

    按照惯例,苹果将继续在今年9月举办一年一度的秋季新品发布会,有传言称发布会将于9月12日举行,届时全新的iPhone 15系列将正式与大家见面,不出意外的话
  • 电博会与软博会实现

    电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top