Kafka基础知识学习

Kafka概念

一、核心组件对照表

组件定义主要功能特点
BrokerKafka集群中的服务器节点存储消息、处理请求、管理分区唯一ID,可能成为Controller
Topic消息的逻辑分类单元消息分类、存储组织包含多个Partition,类似数据库表
PartitionTopic的物理分片并行处理、数据分布有序队列,不可变,有offset
Offset消息在分区中的位置标识追踪消费进度单调递增,支持随机访问
Replica分区的备份数据备份、故障转移包括Leader和Follower

二、客户端组件表

组件定义主要功能特点
Producer消息生产者发送消息、分区策略支持同步/异步,可指定key
Consumer消息消费者消费消息、维护offset可订阅多个Topic
Consumer Group消费者逻辑分组负载均衡、分区分配组内分区独占消费

单分区场景下的消费组和消费者

1. 单分区场景
Topic: order_topic (单分区)
└── Partition 0 (消息1,2,3,4,5...)│├── ConsumerGroup1 (订单系统)│   └── Consumer1 (工作) --> 串行消费消息1,2,3,4,5...│   └── Consumer2 (空闲,无法分配分区)│   └── Consumer3 (空闲,无法分配分区)│├── ConsumerGroup2 (统计系统)│   └── Consumer1 (工作) --> 串行消费相同的消息1,2,3,4,5...│   └── Consumer2 (空闲,无法分配分区)│└── ConsumerGroup3 (日志系统)└── Consumer1 (工作) --> 串行消费相同的消息1,2,3,4,5...└── Consumer2 (空闲,无法分配分区)

多分区场景下的消费组和消费者

Topic: order_topic (3个分区)
├── Partition 0 (消息1,4,7...)
│   ├── ConsumerGroup1
│   │   └── Consumer1 (工作) --> 消费消息1,4,7...
│   ├── ConsumerGroup2
│   │   └── Consumer1 (工作) --> 消费相同的消息1,4,7...
│   └── ConsumerGroup3
│       └── Consumer1 (工作) --> 消费相同的消息1,4,7...
│
├── Partition 1 (消息2,5,8...)
│   ├── ConsumerGroup1
│   │   └── Consumer2 (工作) --> 消费消息2,5,8...
│   ├── ConsumerGroup2
│   │   └── Consumer2 (工作) --> 消费相同的消息2,5,8...
│   └── ConsumerGroup3
│       └── Consumer2 (工作) --> 消费相同的消息2,5,8...
│
└── Partition 2 (消息3,6,9...)├── ConsumerGroup1│   └── Consumer3 (工作) --> 消费消息3,6,9...├── ConsumerGroup2│   └── Consumer3 (工作) --> 消费相同的消息3,6,9...└── ConsumerGroup3└── Consumer3 (工作) --> 消费相同的消息3,6,9...

三、集群管理组件表

组件定义主要功能特点
Controller特殊的Broker角色Leader选举、监控状态集群只有一个活跃Controller
ISR同步副本集合保证数据一致性包含Leader和同步的Follower

四、场景举例表(程序考虑)

场景实现方式优点注意事项
消息查找基于Key保证顺序性,相同key到同分区可能导致数据倾斜
基于时间支持历史数据查询性能较低
基于Offset精确定位需要记录offset
外部索引支持复杂查询需要额外存储

五、实践总结与分析

1. 分区与副本分布示例

集群规模:3个Broker
Topic配置:3个分区,复制因子3分区分布示例:
Partition 0:Leader(Broker1),Follower(Broker2,Broker3)
Partition 1:Leader(Broker2),Follower(Broker3,Broker1)
Partition 2:Leader(Broker3),Follower(Broker1,Broker2)

2. 关键特性分析

  • 分区分配:均匀分布在所有Broker上
  • 副本策略
    • 每个分区的Leader优先在首选Broker上
    • Follower按照优化后的顺序分布在其他Broker上
    • 保证副本均匀分布,提高可用性

3. 消费模式分析

  • 单Consumer Group
    • 最多支持3个消费者(等于分区数,个人环境也是3个)
    • 超过3个消费者会有消费者空闲
  • 多Consumer Group
    • 每个Group都可以有最多3个消费者
    • 各Group独立消费,不互相影响
    • 实现消息的广播效果

多场景举例说明

例如:有一个Topic (order_topic),3个分区
│
├── 分区0
├── 分区1
└── 分区2场景A:单Consumer Group
ConsumerGroup1:
├── Consumer1 --> 消费分区0
├── Consumer2 --> 消费分区1
└── Consumer3 --> 消费分区2
└── Consumer4 --> 空闲(因为没有更多分区可分配)场景B:多Consumer Group
ConsumerGroup1:
├── Consumer1 --> 消费分区0
├── Consumer2 --> 消费分区1
└── Consumer3 --> 消费分区2ConsumerGroup2:(同时独立消费相同的数据)
├── Consumer1 --> 消费分区0
├── Consumer2 --> 消费分区1
└── Consumer3 --> 消费分区2
Topic: order_topic (3个分区)// 场景1:订单处理系统(负载均衡)
ConsumerGroup: order_processing
- Consumer1: 处理分区0的订单
- Consumer2: 处理分区1的订单
- Consumer3: 处理分区2的订单
结果:每个订单只被处理一次,实现负载均衡// 场景2:多系统数据同步(广播)
ConsumerGroup1: order_system
- Consumer1-3: 消费订单数据写入订单系统ConsumerGroup2: statistics_system
- Consumer1-3: 同样的数据写入统计系统ConsumerGroup3: log_system
- Consumer1-3: 同样的数据写入日志系统
结果:同一条消息被多个系统处理,实现数据广播

总结
1、分区数决定单个Consumer Group内最大的并行消费者数
2、Consumer Group提供了两种消费模式:

  • 单Group:负载均衡模式(消息只被处理一次)
  • 多Group:广播模式(同一消息被多个系统处理)

4. 消息查找策略(程序考虑)

  1. Key-Based查找
    • 相同key路由到固定分区
    • 适合需要顺序性的场景
  2. 时间查找
    • 支持按时间戳查找
    • 适合历史数据分析
  3. Offset查找
    • 精确定位消息位置
    • 适合消息重放场景
  4. 外部索引
    • 维护消息元数据
    • 支持复杂查询需求

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

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

相关文章

【miniMax开放平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…

PC上浏览器是如何查询DNS 缓存的呢?

通过 ipconfig /displaydns 的显示结果可以获取本机的 DNS 缓存信息,那么浏览器是如何获取本机的 DNS 缓存。 答案是:浏览器获取本机的 DNS 缓存主要是通过操作系统提供的接口来获取,。 具体的获取途径如下: 先查询自身缓存&am…

26-ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动,所以需要创建es用户 useradd elasticsearch passwd elasticsearch 解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz 将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sud…

BuyPass SSL证书:申请免费可用多域名SSL证书6个月180天

目录 一、前沿 二、条件 三、申请流程 四、注意事项 五、总结 一、前沿 找到一个6个月180天的免费证书,目前 BuyPass 提供了类似ZerSSL 等基于 ACME/Certbot 的证书自动签发服务 - BuyPass GO Free SSL,完全免费,只支持单域名、多域名&am…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件&#…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

React状态管理之Redux

React状态管理之Redux 在React应用中,状态管理是一个至关重要的概念。随着应用规模的扩大,组件之间的状态共享和更新变得愈发复杂。Redux作为一个专门用于JavaScript应用(尤其是React应用)的状态管理库,提供了一种可预…

Spring Boot框架:电商系统的技术革新

4 系统设计 网上商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经过全…

layui.all.js:2 Uncaught Error: Syntax error, unrecognized expression

报错内容: layui.all.js:2 Uncaught Error: Syntax error, unrecognized expression: input[name"image1UploadTime"language] 错误代码: $(input[name"imagejUploadTime"language]).val(currentDateTime); 因为 language 是个变…

Scala的set

//Set的特点:唯一(元素不相同);无序 case class Book(var bookName:String,var author:String,var price:Double){} object test27 {def main(args: Array[String]): Unit {//定义一个可变setval set1 scala.collection.mutable…

【数据分享】中国对外投资合作发展报告(2013-2023)

数据介绍 绪 论............................................................................................................................. 1 对外投资合作高质量发展迈出新步伐................................................................... 2 第一篇 发…

【深度学习】LSTM、BiLSTM详解

文章目录 1. LSTM简介:2. LSTM结构图:3. 单层LSTM详解4. 双层LSTM详解5. BiLSTM6. Pytorch实现LSTM示例7. nn.LSTM参数详解 1. LSTM简介: LSTM是一种循环神经网络,它可以处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM通…

leetcode hot100【LeetCode 236.二叉树的最近公共祖先】java实现

LeetCode 236.二叉树的最近公共祖先 题目描述 给定一个二叉树, 找到该树中两个给定节点的最近公共祖先。 节点可以表示为它在树中的路径,其中路径的第一个节点是根节点,每个后续节点是其父节点的直接子节点。 示例 1: 输入: root [3,5,1,6,2,0,8,n…

【云原生系列--Longhorn的部署】

Longhorn部署手册 1.部署longhorn longhorn架构图: 1.1部署环境要求 kubernetes版本要大于v1.21 每个节点都必须装open-iscsi ,Longhorn依赖于 iscsiadm主机为 Kubernetes 提供持久卷。 apt-get install -y open-iscsiRWX 支持要求每个节点都安装 N…

跟李笑来学美式俚语(Most Common American Idioms): Part 02

Most Common American Idioms: Part 02 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…

Molecular signatures database (MSigDB) 3.0

文献翻译和解读(解读在最后) 摘要 动机: 良好注释的基因集代表了生物学过程的全貌,对于大规模基因组数据的有意义和深入解读至关重要。分子特征数据库(MSigDB)是最广泛使用的此类基因集资源库之一。 结果…

【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验

实验三: HDFS Java API编程实践 实验题目 HDFS Java API编程实践 实验目的 熟悉HDFS操作常用的Java API。 实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 实验…

Flowable 构建后端服务(后端以及数据库搭建) Flowable Modeler 设计器搭建(前端)

案例地址&#xff1a;xupengboo-flowable-example Flowable 构建后端服务&#xff08;后端以及数据库搭建&#xff09; 以 Spring Boot 项目为例&#xff1a; 引入 Flowable 必要依赖。 <!-- flowable 依赖 --> <dependency><groupId>org.flowable</gr…

2022 年 9 月青少年软编等考 C 语言二级真题解析

目录 T1. 统计误差范围内的数思路分析 T2. 全在其中思路分析 T3. Lab 杯思路分析 T4. 有趣的跳跃思路分析 T5. 反反复复思路分析 T1. 统计误差范围内的数 统计一个整数序列中与指定数字 m m m 误差范围小于等于 x x x 的数的个数。 时间限制&#xff1a;1 s 内存限制&#…