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

Kafka原理--主题、分区、消费者的关系

原文网址:Kafka原理--主题、分区、消费者的关系-CSDN博客

简介

本文分享kafka主题、分区与消费者的关系。

kafka 为了保证消息顺序性(FIFO),一个partition只能被同一组的一个consumer消费。

不同组的consumer可以消费同一个partition,一个consumer可以消费多个partition。

相关网址

Kafka原理--工作流程-CSDN博客

注意

RocketMQ的主题与分区、分区与消费者的关系,与Kafka基本一样!几个区别是

1.RocketMQ没有Topic瓶颈。详见:队列很多时,为什么RocketMQ比Kafka性能好?-CSDN博客

2.RocketMQ支持集群模式、广播模式。Kafka只支持集群模式。(集群模式:一个消费组只有一个消费者消费。广播模式:所有消费者都消费。)

主题与分区

为什么要分区?

将topic的消息打散到多个分区,分布式地保存在不同的broker上,可以提高producer和consumer处理消息的吞吐量。

Kafka的producer和consumer都可以多线程地并行操作,而每个线程处理的是一个分区的数据。因此分区实际上是调优Kafka并行度的最小单元。

对于producer而言,它是用多个线程并发地向不同分区所在的broker发起Socket连接同时给这些分区发送消息;而consumer,同一个消费组内的所有consumer线程都被指定topic的某一个分区进行消费。

最佳实践

如果一个broker只有某topic的一个partition,能最大限度发挥顺序写的优势。

如果一个broker对应某topic的多个partition,需要随机分发,顺序IO会退化成随机IO,性能下降。

测试:3个 Broker,1个 Topic,无Replication,异步,3个 Producer,消息 Payload 为100字节。

第一阶段

当 Partition 数量小于 Broker个数时,Partition 数量越大,吞吐率越高,且呈线性提升。

Kafka 会将所有 Partition 均匀分布到所有Broker 上,所以当只有2个 Partition 时,会有2个 Broker 为该 Topic 服务。

3个 Partition 时,同理会有3个 Broker 为该 Topic 服务。

第二阶段:

当 Partition 数量多于 Broker 个数时,总吞吐量并未有所提升,甚至还有所下降。

Topic瓶颈

Topic多时,性能明显降低。单机超过64个队列(分区),负载明显升高,且分区越多,发送消息响应时间越长。

原因是:在Broker上,每一个分区都是一个单独的文件。如果Topic变多,分区数也会上升,原本的顺序读写会变成随机读写,性能极度下降。

分区与消费者

全文已转移到此网址:Kafka原理-主题、分区、消费者的关系 - 自学精灵

http://www.dtcms.com/a/319713.html

相关文章:

  • windows内核研究(内存管理-线性地址的管理)
  • 【PHP 中的 `use` 关键字完全指南】
  • Linux图文理解进程
  • fiddler实用用法,抓包内容导入到apipos
  • 数据库管理系统:入门需要了解的内容
  • Modbus核心参数,调试工具,接线注意事项
  • Mongodb常用命令简介
  • C++线程库的学习
  • 从Centos 9 Stream 版本切换到 Rocky Linux 9
  • MongoDB数据存储界的瑞士军刀:cpolar内网穿透实验室第513号挑战
  • IDEA-Research推出的一系列检测、分割模型:从DINO(改进版DETR)、Grounding Dino、DINO-X到Grounded SAM2
  • 串联所有单词的子串-leetcode
  • 计算机基础·linux系统
  • Linux线程学习
  • pytorch学习笔记-最大池化maxpooling的使用、搭建多层网络并验证、sequential的使用
  • golang的面向对象编程,struct的使用
  • 2.8 逻辑符号
  • Linux怎么查看时区信息?(Linux时区)(tzselect)
  • Java中接口与抽象类
  • 处理失败: module ‘fitz‘ has no attribute ‘open‘
  • 传统防火墙与下一代防火墙
  • 华为 2025 校招目标院校
  • 【2025最新】在 macOS 上构建 Flutter iOS 应用
  • 嵌入式学习---在 Linux 下的 C 语言学习 Day10
  • 可执行文件的生成与加载执行
  • 超高车辆如何影响城市立交隧道安全?预警系统如何应对?
  • [论文阅读] 软件工程 | 软件工程中的同理心:表现、动机与影响因素解析
  • oracle 11G安装大概率遇到问题
  • 大文件断点续传(vue+springboot+mysql)
  • Failed to restart docker.service: Unit docker.service is masked.