Kafka架构 主题中的分区

分区是隶属于主题之下的。

第一个图满足了最基本的消息的发布订阅,但是kafka是一个高吞吐量的消息队列,假如producer生产的速度远远大于consumer的消费能力,那么会造成topic下的数据堆积。

消息堆积满之后就需要扩展了,否则效率低下。于是就需要通过分区扩展了。分区的作用其实就是为了提高数据的吞吐量,提高消费能力了。

有三个消费者就可以同时消费三个分区里面的数据,这样就是上面没有分区的三倍了。

如果没有分区,那么三个消费者从分区当中拉取数据,数据是有offset的,这时候offset是单调递增的,也就意味着在同一个时间点所有的consumer只能读取一条数据。

但是有三个分区,这三个分区互不影响互不打扰,每一套分区里面都有自己的offset,每个consumer消费对应分区的数据,这样同一个时间点是可以读取到3条数据。所有有三个分区是单分区的3倍吞吐量。

为了提高吞吐量和提高处理数据的能力,它们去做了多个分区。

另外的两个分区在其他broker上面

也就是说这个topic有三个分区,这三个分区尽量均匀的发布在3个broker上面。

为什么要使用分区?其实最直观的原因是为了提高kafka集群的数据吞吐能力,数据消费能力。有了分区之后就可以去启动多个消费者同时去消费不同分区中的数据来提高这样的并行度。

分区就是把kafka当中的主题分成了若干个部分,分区是一个物理概念,我们可以实实在在看到这样的目录存在。而这样的目录也会尽量去做一个均衡的处理。

就像上面创建的一个主题,它会将三个分区尽量的均匀分布在每一个broker上。

相关推荐
笨蛋不要掉眼泪1 小时前
RabbitMQ消息队列:SpringAMQP
java·分布式·rabbitmq
发量惊人的中年网工2 小时前
SD-WAN如何赋能工业物联网?打造工厂网络远程连接和数据传输新方案
运维·网络·分布式·物联网
java1234_小锋2 小时前
【免费】基于Spark实时金融交易风险监控与预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
大数据·spark·kafka·金融交易风险监控与预测
段一凡-华北理工大学2 小时前
AI推动工业智能化转型~系列文章05:特征工程:工业 AI 的第一生产力
数据库·人工智能·分布式·搜索引擎·特征工程·高炉智能化
Devin~Y3 小时前
从本地生活电商到 AI RAG:互联网大厂 Java 面试场景完整实战
java·spring boot·redis·elasticsearch·spring cloud·kafka·rag
斯普润布特3 小时前
Kafka KRaft 三节点 ARM64 Docker 部署
分布式·kafka
梦想画家3 小时前
告别轮询:基于PostgreSQL CDC构建实时数据管道
数据库·postgresql·kafka·实时湖仓
笨蛋不要掉眼泪4 小时前
RabbitMQ消息队列:交换机机制
java·分布式·rabbitmq
zcmodeltech4 小时前
智慧农业沙盘模型物联网控制系统设计:基于STM32与Modbus RTU的传感器-执行器闭环方案
服务器·分布式·stm32·嵌入式硬件·物联网·能源
后端观测站4 小时前
第一篇:为什么需要消息队列?
kafka·java-rocketmq