kafka 简单理解 - Partition的读和写

1.kafka所采用的设计方式,盘子就是partition,每个人就是一个consumer,每个苹果就是一条message。办法三每个盘子中苹果的消费是有序的,而办法二的消费是完全无序的

第二种方法:

 

第三种方法:

 

2.Partition的读和写

 我们知道topic下划分了多个partition,消息的生产和消费最终都是发生在partition之上。下图是一个三个partition的topic的读写示意

 

 我们先看右边的producer,可以看到写的时候,采用round-robin算法,轮询往每个partition写入。

而在消费者端,每个consumer都维护一个offset值,指向的是它所消费到的消息坐标。

我们先看group A的三个consumer,他们分别独立消费不同的三个partition。每个consumer维护了自己的offset。

我们再看group B,可以看到两个group是并行消费整个topic,同一条消息会被不同group消费到。

https://blog.csdn.net/liyiming2017/article/details/82805479

https://zhuanlan.zhihu.com/p/60110741

此处有如下知识点:

1、每个partition都是有序的不可变的。

2、Kafka可以保证partition的消费顺序,但不能保证topic消费顺序。

3、无论消费与否,保留周期默认两天(可配置)。

4、每个consumer维护的唯一元数据是offset,代表消费的位置,一般线性向后移动。

5、consumer也可以重置offset到之前的位置,可以以任何顺序消费,不一定线性后移。
————————————————

原文链接:https://blog.csdn.net/liyiming2017/java/article/details/82805479

 

posted @   littlevigra  阅读(1365)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2019-04-11 修改tomcat JVM 大小 jdk--目录修改 - 设置-Xms,-Xmx相等以避免在每次GC 后调整堆的大小 OOM DUMP MAT
2019-04-11 (转)MySQL慢查询分析优化 + MySQL调优
2018-04-11 kubernetes 比较好的案例-创建tomcat-mysql集群 mysql.yaml + workpress.yaml
2018-04-11 配虚拟ip脚本
点击右上角即可分享
微信分享提示