Kafka基础架构详解

Kafka基础架构

Kafka概述
在这里插入图片描述

在这里插入图片描述

1. Producer(生产者):

  • 生产者是向 Kafka broker 发送消息的客户端。它负责将消息发布到指定的主题(Topic),并可以选择将消息发送到特定的分区(Partition)。
  • 生产者通常是数据源,如应用程序、传感器、日志系统等。
  • 生产者可以以异步或同步的方式发送消息,并且可以配置消息发送的确认机制以确保消息的可靠性。

2. Consumer(消费者):

  • 消费者负责从 Kafka 主题订阅并消费消息。

  • 消费者通过消费者组协调器(Consumer Group Coordinator)协调消费进度,并且每个消费者组只能消费主题中的特定分区,以确保消息被均匀地消费。

  • 消费者是从 Kafka broker 拉取消息的客户端。它负责订阅一个或多个主题,并消费这些主题中的消息。

  • 消费者以消费者组(Consumer Group)的形式组织,每个消费组可以包含一个或多个消费者,每个消费者组内的消费者协作地消费主题中的消息。

3. Consumer Group(消费者组):

  • 消费者组由多个消费者组成,每个消费者负责消费不同分区的数据。
  • 一个分区只能由同一消费者组内的一个消费者消费,这确保了消费者之间的负载均衡和高可用性。
  • 不同消费者组之间相互独立,不会相互影响。
  • 所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
    在这里插入图片描述

4. Broker(代理服务器):

  • 代理服务器是 Kafka 集群中的节点,每个Broker(代理服务器)就是一个 Kafka 服务器。
  • 一个 Kafka 集群由多个Broker(代理服务器)组成,它们负责存储和处理消息数据。
  • 每个Broker(代理服务器)可以容纳多个主题(Topic)。

5. Topics(主题):

  • 主题是 Kafka 中的基本数据分类单位,每条消息都属于一个主题。
  • 主题通常用于标识消息的类型或者来源。例如,一个电商应用可以有一个主题用于存储订单信息,另一个主题用于存储用户活动日志等。
  • Topic(主题)可以理解为消息的分类单元,生产者和消费者面向的都是一个Topic(主题)。
  • 一个主题可以分为多个分区(Partition),用于提高消息的并发处理能力和扩展性。
  • Topic(主题)通常代表着应用程序的某个数据源或数据流。
    在这里插入图片描述

6. Partition(分区):

  • 为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。

  • Partition(分区)是主题的子集,用于组织和存储消息。

  • 一个Topic(主题)可以分为多个Partition(分区),每个Partition(分区)是一个有序的消息队列。

  • Partition(分区)的数量通常与 Kafka 集群中的节点数量相关,它们共同构成了整个数据流的分布式存储。

  • 主题可以被分成一个或多个分区,每个分区是一个有序的队列,其中存储着消息记录。

  • 分区允许数据水平扩展,可以分布在 Kafka 集群的不同节点上,提高了系统的可伸缩性和容错性。

  • 每个消息在发送到主题时,都会被分配到一个特定的分区中,并且在该分区中按照顺序存储。
    在这里插入图片描述

7. Replication(副本):

  • 为了提高数据的可靠性和容错性,Kafka 允许为每个分区创建多个副本。
  • 副本是分区的备份,其中的消息与主分区中的消息保持同步。
  • 副本通常分布在 Kafka 集群的不同节点上,以防止单点故障、提高系统的可用性并提高数据的可靠性和容错性。
  • 每个分区的副本中都有一个 Leader 和若干个 Follower,用于实现数据的同步和故障转移。

8. Leader(领导者):

  • 每个分区的多个副本中有一个被选举为 Leader,它是生产者发送数据的对象,以及消费者消费数据的对象。
  • Leader 负责处理分区中的所有读写操作,其他副本则作为 Follower 实时从 Leader 中同步数据。

9. Follower(跟随者):

  • 每个分区的多个副本中的非 Leader 副本称为 Follower,它们实时从 Leader 中同步数据,保持和 Leader 数据的一致性。
  • 当 Leader 发生故障时,某个 Follower 会成为新的 Leader,确保数据的可用性和持久性。

10. Zookeeper

  • Kafka 使用 Zookeeper 来协调和管理集群中的各个节点。
  • Zookeeper 负责维护集群的元数据(metadata),例如主题、分区、消费者组等的信息。
  • Zookeeper 还负责监控集群中节点的状态,并协调分区的分配和副本的同步。
    在这里插入图片描述

Apache Kafka 4.x 版本计划中的一个重要变化是移除对 Apache ZooKeeper 的依赖。这个变化旨在简化 Kafka 的架构和部署,并提高其可维护性和可扩展性。

  • 1.简化架构:
    在之前的版本中,Kafka 使用 ZooKeeper 来管理集群元数据和协调功能。但随着版本的演进,Kafka 内部实现了自己的元数据管理和协调机制。因此,Kafka 4.x 版本将简化架构,去除对 ZooKeeper 的依赖。
  • 2.集成 KRaft 协议:
    Kafka 4.x 版本引入了 KRaft 协议,这是一种新的复制协议,用于管理 Kafka 的元数据和集群的一致性。KRaft 协议取代了之前使用 ZooKeeper 进行复制和协调的机制。
  • 3.简化部署和运维:
    移除对 ZooKeeper 的依赖简化了 Kafka 的部署和运维。不再需要独立管理 ZooKeeper 集群,减少了部署的复杂性,同时简化了监控和维护 Kafka 集群。
  • 4.提高可扩展性和性能:
    Kafka 4.x 版本通过移除对 ZooKeeper 的依赖,减少了对外部依赖的关联,提高了系统的可扩展性和性能。Kafka 可以更好地利用现代硬件和网络,在大规模环境中高效运行。

尽管 Kafka 4.x 版本移除了对 ZooKeeper 的依赖,但仍然需要进行平滑的升级过程,并且需要在现有环境中仔细评估和测试新版本的兼容性和性能。Apache Kafka 官方文档提供了关于新版本升级和使用的详细指南,建议参考官方文档获取更准确和最新的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/702970.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高中数学:平面向量-加减运算

一、向量的加法运算 三角形法则(推荐) 两个或多个向量收尾相连的加法运算,用三角形法则 简便算法 首尾相连的多个向量,去掉中间点,就是最终的和。 也可以用三角形法则证明 向量加法交换律 向量加法结合律 平行四…

打造销售爆款利器!淘宝商品评论电商API接口全方位解析

无论是实体店还是电商平台,通过有效的销售推广手段,提升产品销量都是商家追求的目标。而淘宝商品评论电商API接口就是一种非常有效的工具,它能够帮助商家获取、分析并利用商品评论信息,为销售策略提供有力支持。联讯数据将全面解析…

Flutter 依据JSON数据自动生成实体类

json自动化生成工具 点击这里可以跳转 页面是这样的 然后在左边输入你的json数据,它会自动生成对应的实体类 生成的实体类是如下: import package:json_annotation/json_annotation.dart; part merch_region.g.dart;JsonSerializable()class MerchReg…

华为设备使能Auto-Config功能

Auto-Config is working. Before configuring the device, stop Auto-Config. If you perform configurations when Auto-Config is running, the DHCP, routing, DNS, and VTY configurations will be lost. Do you want to stop Auto-Config? [y/n] 背景信息 此任务的应用场…

AI图像生成-基本步骤

模型板块 1、新建采样器:新建节点-》采样器-》K采样器 2、拖动模型节点后放开,选择checkpoint加载器(简易),模型新建成功 提示词板块 1、拖动正面条件节点后放开,选择CLIP文本编码器,模型新建…

Vue 封装axios

【一】准备工作 (1)安装必要插件 安装Axios,这是必要的。默认最新版 npm install axios -S 或 cnpm install axios -S安装elementui-plus,用于提示信息 npm install element-plus --save # 或 cnpm install element-plus --s…

智慧公厕,提升公共厕所管理效率的信息化变革

现代社会中,公共厕所的管理成为一个不可忽视的问题。随着城市化进程的加快,人们对公厕的需求日益增加,但公厕的管理却面临诸多困难。为了解决这一问题,智慧公厕应运而生,通过信息化的变革,提高公厕的管理效…

GeoServer /geoserver/wms RCE漏洞复现(CVE-2022-24816)

0x01 产品简介 GeoServer是一款开源的地理数据服务器软件,主要用于发布、共享和处理各种地理空间数据。它支持众多的地图和空间数据标准,能够使各种设备通过网络来浏览和使用这些地理信息数据。 0x02 漏洞概述 GeoServer /geoserver/wms 接口处存在远程代码执行漏洞,未经…

Python邮件处理库之flanker使用详解

概要 Flanker是一个开源的邮件处理库,专门设计用于解析、验证和构建电子邮件地址和MIME消息。由Mailgun开发,它旨在提高邮件处理的效率和准确性,尤其适用于需要高效邮件验证和解析的应用程序。 安装 安装Flanker非常简单,可以通过Python的包管理器pip进行安装: pip ins…

阿里云服务器下,部署LNMP环境安装wordpress

目录 1 LNMP部署1、简单说明2、nginx部署3、php8 安装4、mysql8安装5、配置 nginx 实现支持 PHP 程序6、安装 php 组件7、测试 2 wordpress部署1、安装2、配置 总结 1 LNMP部署 1、简单说明 首先需要明白,LNMP指的是Linux、Nginx、MySQL、PHP。而如果使用阿里云服…

C语言 | Leetcode C语言题解之第84题柱状图中最大的矩形

题目&#xff1a; 题解&#xff1a; int largestRectangleArea(int* heights, int heightsSize) {int st[heightsSize];int p[2];p[0]-1,p[1]heightsSize;int size0,result0;st[size]0;for(int i1;i<heightsSize;i){ while(size!0&&heights[i]<heights[st[size-1…

koa2 + jsonwebtoken + koa-jwt:实现node token验证

一、koa token生成、验证 koa-jwt官网 https://github.com/koajs/jwt 推荐一个koa-jwt学习文档&#xff1a; https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html jsonwebtoken方法添加 const { sign, verify } require(jsonwebtoken); const secretKey …