Kafka 是一个分布式流处理平台,核心功能是高吞吐量的消息发布与订阅。以下是 Kafka 最常用的基本操作,涵盖环境启动、主题管理、消息生产与消费等核心场景(基于 Kafka 2.x+ 版本,使用命令行工具)。

一、环境准备与启动

Kafka 依赖 ZooKeeper 管理集群元数据,需先启动 ZooKeeper,再启动 Kafka Broker。

1. 启动 ZooKeeper
# 进入 Kafka 安装目录
cd /path/to/kafka# 启动内置 ZooKeeper(仅用于测试,生产环境需独立部署)
bin/zookeeper-server-start.sh config/zookeeper.properties

默认端口:2181,配置文件路径:config/zookeeper.properties

2. 启动 Kafka Broker
# 另开一个终端,启动 Kafka 服务
bin/kafka-server-start.sh config/server.properties

默认端口:9092,配置文件路径:config/server.properties(可修改端口、日志目录等)。

提示:生产环境中,可通过复制 server.properties 配置多个 Broker(修改 broker.idport 等),组成集群。

二、主题(Topic)管理

主题是 Kafka 中消息的分类容器,所有消息必须发送到指定主题。

1. 创建主题
bin/kafka-topics.sh \--bootstrap-server localhost:9092 \  # 指定 Kafka 服务地址(新版本推荐)--create \                           # 创建操作--topic test-topic \                 # 主题名称--partitions 3 \                     # 分区数(提高并行度,建议 >=  broker 数)--replication-factor 1               # 副本数(高可用,需 <= broker 数,单机测试设为 1)
  • 分区(Partitions):主题的分片,消息按规则分配到不同分区,实现并行读写。
  • 副本(Replication-factor):每个分区的备份数量,防止单点故障(生产环境建议设为 2-3)。
2. 查看所有主题
bin/kafka-topics.sh \--bootstrap-server localhost:9092 \--list
3. 查看主题详情
bin/kafka-topics.sh \--bootstrap-server localhost:9092 \--describe \--topic test-topic

输出包含分区数量、副本分布、首领分区(Leader)等信息。

4. 修改主题(增加分区)
bin/kafka-topics.sh \--bootstrap-server localhost:9092 \--alter \                            # 修改操作--topic test-topic \--partitions 5                       # 分区数只能增加,不能减少
5. 删除主题
bin/kafka-topics.sh \--bootstrap-server localhost:9092 \--delete \--topic test-topic

注意:默认配置下,删除主题需在 server.properties 中开启 delete.topic.enable=true(默认已开启)。

三、生产消息(Producer)

通过命令行工具模拟生产者发送消息到主题。

bin/kafka-console-producer.sh \--bootstrap-server localhost:9092 \--topic test-topic \--producer-property acks=1  # 可选:消息确认机制(1 表示 Leader 接收成功即返回)

执行后进入交互模式,输入消息并回车即可发送(例如输入 hello kafka)。

四、消费消息(Consumer)

通过命令行工具模拟消费者从主题接收消息。

1. 基础消费(默认从最新消息开始)
bin/kafka-console-consumer.sh \--bootstrap-server localhost:9092 \--topic test-topic

此时若生产者发送新消息,消费者会实时接收。

2. 从头消费(包含历史消息)
bin/kafka-console-consumer.sh \--bootstrap-server localhost:9092 \--topic test-topic \--from-beginning  # 从最早的消息开始消费
3. 指定消费组(Consumer Group)

消费组是 Kafka 实现消息负载均衡和广播的核心机制,同一组内的消费者共享消息(一条消息仅被组内一个消费者消费)。

bin/kafka-console-consumer.sh \--bootstrap-server localhost:9092 \--topic test-topic \--group my-group  # 指定消费组名称
4. 查看消费组信息
# 查看所有消费组
bin/kafka-consumer-groups.sh \--bootstrap-server localhost:9092 \--list# 查看指定消费组详情(包括偏移量)
bin/kafka-consumer-groups.sh \--bootstrap-server localhost:9092 \--describe \--group my-group

输出包含每个分区的消费进度(当前偏移量、最新偏移量、滞后量)。

五、停止服务

1. 停止 Kafka Broker
bin/kafka-server-stop.sh
2. 停止 ZooKeeper
bin/zookeeper-server-stop.sh

关键参数说明

  • --bootstrap-server:Kafka Broker 地址(格式:host:port,多个用逗号分隔),替代旧版本的 --zookeeper(旧方式依赖 ZooKeeper,已不推荐)。
  • --topic:操作的主题名称。
  • --from-beginning:消费者从主题的起始位置开始消费。
  • --group:指定消费组,用于消息分配和进度跟踪。

常见场景示例

  1. 测试消息流程:启动 ZooKeeper → 启动 Broker → 创建主题 → 启动生产者发送消息 → 启动消费者接收消息。
  2. 负载均衡:同一消费组启动多个消费者,消息会被均匀分配到不同消费者(按分区分配)。
  3. 广播消息:不同消费组消费同一主题,每个组都会收到全量消息。

通过以上操作,可快速上手 Kafka 的核心功能,实际开发中需结合客户端 SDK(如 Java、Python 等)实现更复杂的生产消费逻辑。

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

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

相关文章

React 为什么要自定义 Hooks?

历史相关文章2024年&#xff1a; React 为什么引入 Hooks &#xff1f; React 中&#xff0c;Hook 是一个特定的概念 自定义 Hook&#xff08;Custom Hook&#xff09;在 React 中相当于&#xff1a; ✅ 一个可以复用的逻辑片段&#xff0c;封装了多个内置 Hooks 的组合和行为 …

[激光原理与应用-181]:测量仪器 - 频谱型 - 干涉仪,OCT(光学相干断层扫描技术)

OCT&#xff08;光学相干断层扫描技术&#xff09;的核心工作原理基于低相干光干涉&#xff0c;通过测量生物组织或材料内部不同深度结构的背向散射光信号差异&#xff0c;构建高分辨率的二维或三维图像。以下是其工作原理的详细解析&#xff1a;一、基础原理&#xff1a;低相干…

python学智能算法(三十五)|SVM-软边界拉格朗日方程乘子非负性理解

【1】引言 前序学习进程中&#xff0c;已经学习了构建SVM软边界拉格朗日方程&#xff0c;具体方程形式为&#xff1a; L(w,b,ξ,α,μ)12∣∣w∣∣2C∑i1nξi−∑i1nαi[yi(w⋅xib)−1ξi]−∑i1nμiξiL(w,b,\xi,\alpha,\mu)\frac{1}{2}||w||^2C\sum_{i1}^{n}\xi_{i}-\sum_{i…

LeetCode 刷题【34. 在排序数组中查找元素的第一个和最后一个位置、35. 搜索插入位置】

34. 在排序数组中查找元素的第一个和最后一个位置 自己做 解&#xff1a;二分查找 class Solution { public://二分查找int halfFind(vector<int> nums, int begin, int end, int target){if(begin > end) //找不到的情况return -1;int mid (begin end) / …

Vue3 计算属性与监听器

文章目录计算属性配置项 computedHTML 结构Vue 实例数据方法计算属性绑定数据和方法完整代码vue3商品加减案例监听器配置项 watch简单类型写法深度监听写法计算属性配置项 computed 使用 Vue 实现一个商品价格计算器&#xff0c;设置一个初始单价&#xff0c;初始数量为 1&…

Mysql如何迁移数据库数据

文章目录一、使用 mysqldump 工具&#xff08;最常用&#xff09;&#xff08;一&#xff09;导出数据&#xff08;二&#xff09;导出数据库&#xff08;不含数据&#xff09;&#xff08;三&#xff09;导出指定表&#xff08;四&#xff09;导入数据二、直接拷贝文件三、使用…

为什么输入 URL 后会显示页面?HTTP 协议的 “幕后操作”

&#x1f680; 浏览器输入URL后&#xff0c;到底发生了什么&#xff1f;前端面试HTTP协议深度解析 今天咱们不聊八卦&#xff0c;来点硬核的——前端面试中绕不开的HTTP协议。是不是一提到“浏览器输入URL后发生了什么”&#xff0c;你就开始头大&#xff1f;别担心&#xff0c…

内网穿透原理和部署教程

前言&#xff1a;本文介绍了内网穿透技术原理及frp工具的部署方法。由于NAT映射表是临时且单向的&#xff0c;外网无法直接访问内网服务。通过部署公网服务器作为中转&#xff0c;frp实现了内网服务的穿透访问。具体步骤包括&#xff1a;下载frp软件包&#xff0c;详细说明了配…

Ping32:为企业数据安全筑起铜墙铁壁​

Ping32&#xff1a;为企业数据安全筑起铜墙铁壁在数字经济飞速发展的今天&#xff0c;企业数据已成为核心竞争力的重要组成部分。然而&#xff0c;数据泄露事件频发&#xff0c;给企业带来的损失难以估量。从商业机密外泄到客户信息曝光&#xff0c;每一次数据安全事故都可能让…

2025年国内iPaaS平台精选

在过去几年里&#xff0c;许多企业在业务系统中面临了诸多有关集成的难题&#xff1a;系统建好了&#xff0c;数据流不动&#xff1b;接口打通了&#xff0c;流程仍卡顿&#xff1b;工具堆叠越来越多&#xff0c;但协同效率反而走低。 这并不是架构设计的问题&#xff0c;也不是…

AD绘制PCB之-板外形设计

1、通过机械层1 【Mechanical 1】绘制出板子轮廓2、选中上面绘制得轮廓先选中一条边&#xff0c;然后按tab键&#xff0c;可以自动选择这条边闭合得线条3、按照选择对象定义设计--->板子形状------>按照选择对象定义执行后得效果&#xff1a;4、根据需要设置板子四角为半…

《汇编语言:基于X86处理器》第12章 浮点数处理与指令编码(2)

Intel X86架构数据的运算主要由通用寄存器处理&#xff0c;但浮点数例外&#xff0c;浮点数的运算由专门的FPU寄存器处理。二进制浮点数由三部分组成&#xff1a;符号&#xff0c;有效数字和阶码。这些格式都出自由IEEE组织制定的标准754-1985&#xff1a;以下是三种浮点数的格…

vue3通过按钮实现横向滚动、鼠标滚动横坐标滚动

效果图&#xff1a;可点击左右文字进行滚动、或通过滚动鼠标 内容左右滚动<template><div class"Home"><div style"display: flex;height: 100%;align-items: center;"><div click"scrollLeft()" style"width: 80px;t…

【Agent】AutoGen:LLM驱动的多Agent对话框架

文章目录一、AutoGen简介1.1 AutoGen的特点1.2 AutoGen的实现1.2.1 可对话Agent1.2.2 对话编程二、基于AutoGen构建多智能体系统2.1 构建步骤2.1 协作模式2.2 通信模型2.3 人机协同2.4 具体示例参考资料一、AutoGen简介 AutoGen是微软推出的一个Multi-Agent框架&#xff0c;允…

乙巳年闰六月十六凌晨感怀

乙巳年闰六月十六凌晨感怀 一段历程一段情&#xff0c;儿郎峥嵘儿郎行。 岁月流金建功业&#xff0c;春秋风尚能潮赢。 路途苦乐人生度&#xff0c;评说成败当下名。 百年孤寂留水墨&#xff0c;千载独步守安宁。

Redis 分布式Session

一、引入依赖引入spring-session-data-redis依赖&#xff0c;不需要指定version&#xff0c;默认和springboot的version保持一致<!-- Spring Session Redis --> <dependency><groupId>org.springframework.session</groupId><artifactId>spring…

JAVA实现附件分片上传

项目需求由于文件服务器的限制&#xff0c;单次调用文件上传接口上传的附件的大小不能超过500MB&#xff0c;对于超过500MB的附件需要分片上传程序示例private Boolean uploadFile(File uploadFile, String uploadUrl, List<Object> fileList) {final long CHUNK_SIZE 5…

PyTorch环境安装

pytorch安装 建议&#xff08;非常强烈的那种&#xff09;用Anaconda创建一个虚拟环境&#xff0c;用于运行安装你的PyTorch conda create -n universal python3.9 1. 基础认知 cuDNN&#xff08;CUDA Deep Neural Network library&#xff09;是 NVIDIA 开发的用于深度学习…

机场风云:AI 云厂商的暗战,广告大战一触即发

文 | 大力财经机场广告牌背后&#xff0c;一场决定云计算未来格局的隐形战争已悄然打响。当你匆匆走过首都机场T3航站楼的通道&#xff0c;巨幅屏幕上“阿里云&#xff1a;开源的力量”与不远处“百度智能云&#xff1a;AI落地领导者”的广告交相辉映。它们精准锁定着日均10万的…

MLE-STAR:谷歌AI推出的机器学习工程新范式,一种搜索驱动、精准优化的智能代理

最近看到 Google AI 发布了一个叫 MLE-STAR&#xff08;Machine Learning Engineering via Search and Targeted Refinement&#xff09;的新系统&#xff0c;说实话&#xff0c;第一眼看完论文和相关介绍后&#xff0c;我是有点震撼的。这不只是一次简单的“LLM 自动化”拼凑…