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

【kafka】Kafka的Topic

目录

        • 1.基本概念
          • 1.1 定义
          • 1.2 作用
        • 2.组成结构
          • 2.1 Partition(分区)
          • 2.2 Segment(段)
          • 2.3 Replica(副本)
        • 3.核心特性
        • 4.创建与管理
          • 4.1 创建Topic
        • 5.配置参数
          • 5.1 Retention(保留策略):
          • 5.2 Cleanup Policy(清理策略):
          • 5.3 其他参数
        • 6.使用场景
        • 7.设计建议
        • 8.与Partition的关系
        • 9 监控与管理

1.基本概念
1.1 定义
  • 1.Topic是Apache Kafka中的一个核心概念,是消息发布和订阅的基本单位。
  • 2.可以将其类比为一个文件夹,生产者将消息发布到特定的Topic中,消费者从该Topic中订阅并读取消息。
  • 3.Topic是Kafka中用于分类存储消息的逻辑概念。
  • 4.每个Topic可以被划分为一个或多个Partition(分区),消息以追加的方式写入Partition。
1.2 作用
  • 1.提供了一种将消息按主题分类的机制。
  • 2.支持多生产者发布消息和多消费者订阅消息。
2.组成结构
2.1 Partition(分区)
  • 1.每个Topic由一个或多个Partition组成。
  • 2.Partition是Kafka中并行处理的基本单位,每个Partition可以存储在不同的Broker上。
  • 3.Partition内的消息是有序的,但不同Partition之间的消息顺序不保证。
2.2 Segment(段)
  • 1.每个Partition进一步划分为多个Segment,用于存储实际的消息数据。
  • 2.Segment由日志文件(.log)和索引文件(.index)组成,便于消息的快速检索和删除。
2.3 Replica(副本)
  • 1.为了提高容错性,每个Partition可以有多个Replica。
  • 2.其中一个是Leader Replica,负责处理读写请求;其他的是Follower Replica,用于数据备份。
3.核心特性
  • 1.高吞吐量:通过Partition的并行处理和批量写入,Kafka能够实现高吞吐量的消息传递。
  • 2.可扩展性:可以根据需要增加Partition的数量,以支持更多的消息量和更高的并发度。
  • 3.持久性:消息被持久化存储在磁盘上,支持消息的重复读取和长时间存储。
  • 4.容错性:通过Replica机制,确保在部分Broker故障时,消息仍然可用。
4.创建与管理
4.1 创建Topic
  • 1.可以使用Kafka提供的命令行工具kafka-topics.sh创建Topic。
  • 2.示例命令:
kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2

--topic:指定Topic名称。
--partitions:指定Partition数量。
--replication-factor:指定Replica数量。
  • 3.查看Topic列表示例:
kafka-topics.sh --list --bootstrap-server localhost:9092
  • 4.描述Topic详情示例:
kafka-topics.sh --describe --topic my-topic --bootstrap-server localhost:9092
  • 5.删除Topic示例:
kafka-topics.sh --delete --topic my-topic --bootstrap-server localhost:9092
5.配置参数
5.1 Retention(保留策略):
  • 1.retention.ms:消息保留的时间(毫秒)。
  • 2.retention.bytes:Topic可以存储的最大数据量(字节)。
5.2 Cleanup Policy(清理策略):
  • 1.delete:根据保留策略删除旧消息。
  • 2.compact:对消息进行压缩,保留每个Key的最新Value。
5.3 其他参数
  • 1.num.partitions:Partition数量(创建后不可更改)。
  • 2.replication.factor:Replica数量。
6.使用场景
  • 1.日志收集:将不同来源的日志消息发布到不同的Topic中,便于后续的处理和分析。

  • 2.实时数据流处理:作为数据源,供流处理框架(如Apache Flink、Apache Spark Streaming)消费。

  • 3.事件驱动架构在微服务架构中,使用Topic实现服务间的异步通信。

  • 4.消息队列:作为分布式消息队列,解耦生产者和消费者。

7.设计建议
  • 1.合理设置Partition数量:
    根据预期的吞吐量和并发度,合理设置Partition数量。
    过多的Partition会增加管理开销,过少的Partition可能限制性能。

  • 2.选择合适的Replica数量:
    在保证容错性的前提下,避免过多的Replica导致性能下降。

  • 3.考虑消息的保留策略:
    根据业务需求,选择合适的保留时间和清理策略。

  • 4.命名规范:
    使用有意义的Topic名称,便于管理和维护。

8.与Partition的关系
  • 1.并行处理:Partition是实现并行处理的关键,不同的Partition可以并行地处理消息。

  • 2.消息顺序:同一个Partition内的消息是有序的,但不同Partition之间的消息顺序不保证。

  • 3.负载均衡:生产者可以将消息发布到不同的Partition,消费者组中的消费者可以订阅不同的Partition,实现负载均衡。

9 监控与管理
  • 1.监控指标:消息流入和流出速率。
    Partition的Leader和Follower状态。
    消息的滞后情况(Consumer Lag)。

  • 2.管理工具:
    Kafka自带的命令行工具。
    第三方监控工具,如Prometheus、Grafana、Confluent Control Center等。


文章转载自:
http://bedspring.kjawz.cn
http://cheapo.kjawz.cn
http://ba.kjawz.cn
http://alameda.kjawz.cn
http://anorthitic.kjawz.cn
http://amygdalotomy.kjawz.cn
http://arabin.kjawz.cn
http://aciculignosa.kjawz.cn
http://botswanian.kjawz.cn
http://carnalize.kjawz.cn
http://araneidan.kjawz.cn
http://bacteriocin.kjawz.cn
http://capsian.kjawz.cn
http://ashpan.kjawz.cn
http://chowderhead.kjawz.cn
http://avisandum.kjawz.cn
http://arginine.kjawz.cn
http://bms.kjawz.cn
http://airstop.kjawz.cn
http://allusive.kjawz.cn
http://averagely.kjawz.cn
http://antimagnetic.kjawz.cn
http://abrase.kjawz.cn
http://baal.kjawz.cn
http://accoutre.kjawz.cn
http://cardfile.kjawz.cn
http://adiposity.kjawz.cn
http://bivalvular.kjawz.cn
http://arkose.kjawz.cn
http://astonied.kjawz.cn
http://www.dtcms.com/a/107721.html

相关文章:

  • 实战打靶集锦-35-GitRoot
  • 软件定义无线电39
  • SpringMVC和SpringBoot是否线程安全?
  • 2.5/Q2,GBD数据库最新文章解读
  • 从代码学习深度学习 - NLP之文本预处理 PyTorch版
  • 深度解析Python代码中的广告信息提取与JSON处理
  • C++实用函数:remove_if
  • 后端框架入门:Django
  • 2024年信息素养大赛 C++小学组初赛 算法创意实践挑战赛 真题答案解析
  • 【棒垒球规则】全国幼儿软式棒垒球比赛规则(一)·棒球1号位
  • 【Linux运维】查询指定日期的上月
  • Springboot整合Mybatis+Maven+Thymeleaf学生成绩管理系统
  • 【力扣hot100题】(042)验证二叉搜索树
  • 物联网中,客户端与服务器之间都有哪些通信协议。
  • 无线传感网络协议
  • 【11408学习记录】从混乱到清晰:还原+断开+简化,彻底攻破英语分裂式长难句
  • 深度剖析 MySQL 与 Redis 缓存一致性:理论、方案与实战
  • NX二次开发——读取指定部件或者对象的属性
  • spring 中的DAO是什么
  • 【学Rust写CAD】24 扫描渐变(sweep_gradient.rs)
  • 嵌入式c学习第十一天
  • CMake 中的置变量
  • 在服务器里面磁盘分区很简单吗?
  • 51单片机的五类指令(三)——逻辑操作类指令
  • 【图形API】片段着色器自动计算LOD
  • 蓝桥杯嵌入式16届—— LED模块
  • 【ABAP】REST/HTTP技术(一)
  • 进程间的通信
  • 批量删除 txt/html/json/xml/csv 等文本文件中的重复行
  • 2025年Axure RP9无法免费使用Axure Cloud的解决方案