当前位置: 首页 > news >正文

Kafka Topic(主题)详解

在 Kafka 中,Topic(主题) 是消息的逻辑分类单位,相当于一个消息队列的名字。生产者(Producer)将消息写入某个 Topic,消费者(Consumer)则订阅并消费该 Topic 的消息。


1. Topic 的核心概念

  1. 消息分类容器

    • Kafka 不直接存储“队列”,而是通过 Topic 来区分业务数据。

    • 举例:日志系统可能有 topic-accesslogtopic-errorlog

  2. 逻辑概念

    • 一个 Topic 在物理上由 若干个分区(Partition) 组成。

    • 分区中的消息是 有序存储 的,并且每条消息有一个唯一的 偏移量(Offset)

  3. 多订阅者模型

    • Kafka 允许多个消费者同时订阅同一个 Topic。

    • 可以广播消费(多个消费者组独立消费全量数据),也可以组内分摊(一个消费者组内的成员分摊分区)。


2. Topic 与 Partition(分区)

  1. 分区的作用

    • 提高 并发度:一个分区只能被同一个消费者组内的一个消费者消费,分区越多,消费者并发能力越强。

    • 提高 存储能力:分区可以分布在不同的 Broker 上,提升存储容量和吞吐。

  2. 分区内有序

    • 分区内的消息严格按照写入顺序存储和读取。

    • 跨分区则不保证全局顺序。

  3. 副本机制(Replication)

    • 每个分区都有 Leader 副本Follower 副本

    • 生产者和消费者都与 Leader 副本交互。

    • Follower 负责冗余备份,保证高可用。


3. Topic 的配置项

在创建 Topic 时,可以指定配置,比如:

  • 分区数(partitions)

    --partitions 3

    表示该 Topic 拥有 3 个分区。

  • 副本因子(replication-factor)

    --replication-factor 2

    表示每个分区有 2 份副本(1 个 Leader + 1 个 Follower)。

  • 保留策略

    • retention.ms:消息保留的时间,默认 7 天。

    • retention.bytes:按大小限制 Topic 中消息保留量。

    • cleanup.policy=delete:过期即删除(默认)。

    • cleanup.policy=compact:仅保留每个 Key 的最新消息(常用于 KV 场景)。


4. Topic 的命令操作

常见操作通过 kafka-topics.sh 完成。

  1. 创建 Topic

    bin/kafka-topics.sh --create \ --bootstrap-server localhost:9092 \ --topic my-topic \ --partitions 3 \ --replication-factor 2

  2. 查看 Topic 列表

    bin/kafka-topics.sh --list --bootstrap-server localhost:9092

  3. 查看 Topic 详情

    bin/kafka-topics.sh --describe \ --bootstrap-server localhost:9092 \ --topic my-topic

  4. 删除 Topic

    bin/kafka-topics.sh --delete \ --bootstrap-server localhost:9092 \ --topic my-topic


5. Topic 的使用场景

  1. 日志收集系统

    • 应用将日志写入 topic-logs,多个下游系统(存储、监控、实时计算)同时消费。

  2. 消息队列替代品

    • 下单系统写入 topic-orders,库存系统、通知系统等分别消费。

  3. 事件驱动架构(EDA)

    • 各类事件(用户登录、下单、支付)写入不同 Topic,供下游业务解耦处理。


6. Topic 的最佳实践

  • 分区数量要合理

    • 太少会导致吞吐不足,太多则增加管理成本和开销。

  • 副本因子建议 ≥2

    • 防止单点故障。

  • 避免过多小 Topic

    • Topic 数量过多会加重 Kafka 的元数据开销。

  • 根据业务选择保留策略

    • 日志类用 delete,KV 缓存类用 compact


👉 总结:
Kafka 的 Topic 是消息的逻辑分类单元,其本质是由分区和副本组成的分布式日志。它不仅保证消息存储的高吞吐与高可用,还通过消费者组机制支持不同的消费模式。


文章转载自:

http://HK9NDc1Y.gwtbn.cn
http://0A9DceMw.gwtbn.cn
http://DnsUnS2K.gwtbn.cn
http://JOhhHHP4.gwtbn.cn
http://Am5mxtHW.gwtbn.cn
http://bW6ND6LK.gwtbn.cn
http://bPsCFEwv.gwtbn.cn
http://qAvt9GPs.gwtbn.cn
http://gOLF7SOn.gwtbn.cn
http://59WHdQVx.gwtbn.cn
http://g0vPfUCw.gwtbn.cn
http://M8RIH8QL.gwtbn.cn
http://aQp9MW8j.gwtbn.cn
http://tdMiSqE6.gwtbn.cn
http://In6fPHHZ.gwtbn.cn
http://eU9FP7uW.gwtbn.cn
http://0dnbm03E.gwtbn.cn
http://owUpY1YH.gwtbn.cn
http://iWtMktTf.gwtbn.cn
http://qnwExHOB.gwtbn.cn
http://KA7Xg5R7.gwtbn.cn
http://Lea0Kq8V.gwtbn.cn
http://QNrfPOg7.gwtbn.cn
http://c205magw.gwtbn.cn
http://N74qkLew.gwtbn.cn
http://Tr9EATQd.gwtbn.cn
http://a1qms1ST.gwtbn.cn
http://t4N7Ms9n.gwtbn.cn
http://yqR9symV.gwtbn.cn
http://VRYiSDF6.gwtbn.cn
http://www.dtcms.com/a/365409.html

相关文章:

  • 四维轻云:多期地理数据管理的得力助手
  • 14,FreeRTOS二值信号量操作
  • 差分隐私在运营指标:ABP 的 DP 计数器与噪声预算
  • 一文读懂RAG:从生活场景到核心逻辑,AI“查资料答题”原来这么简单
  • Wan2.2AllInOne - Wan2.2极速视频生成模型,4步极速生成 ComfyUI工作流 一键整合包下载
  • Java全栈学习笔记29
  • 关于牙科、挂号、医生类小程序或管理系统项目 项目包含微信小程序和pc端两部分
  • 从一次Crash分析Chromium/360浏览器的悬空指针检测机制:raw_ref与BackupRefPtr揭秘
  • 如何修复“您的连接不是私密连接”警告?
  • sentinel实现控制台与nacos数据双向绑定
  • Android音频学习(十六)——CreateTrack
  • 深度学习——CNN实例手写数字
  • 涉私数据安全与可控匿名化利用机制研究(下)
  • Triton Linalg - WrapFuncBodyWithSingleBlockPass
  • 软件设计师备考-(十) 多媒体基础
  • 两个子进程之间使用命名pipe
  • 如何构建企业级RAG知识库?实战方法、关键细节与平台选型
  • 并发编程——14 线程池参数动态化
  • PyTorch 损失函数与优化器全面指南:从理论到实践
  • 归一化的定义与作用
  • IO进程线程;进程,发送信号;进程,消息队列通信;0903
  • 消息传递模型实现
  • 阿里开源首个图像生成基础模型——Qwen-Image本地部署教程,中文渲染能力刷新SOTA
  • AI 生成内容(AIGC)版权归属引争议:创作者、平台、AI 公司,谁该拥有 “作品权”?
  • 弧焊工业机器人保护气节约的关键
  • Windows/Linux下vscode+vcpkg管理C++包链接方法
  • 相关性分析与常用相关系数
  • React学习教程,从入门到精通, React 组件语法知识点(9)
  • 记一次VMware虚拟机(BC-linux)网络配置过程
  • LVGL9.3 vscode 模拟环境搭建