Kafka Topic Partition Offset 这一长串都是啥?
摘要:Offset 偏移量,是针对于单个partition存在的概念。
本文分享自华为云社区《Kafka Topic Partition Offset 这一长串都是啥?》,作者: gentle_zhou。
Kafka,作为一款分布式消息发布和订阅系统,被广泛应用于大数据传输场景;因为其高吞吐量、内置分区、冗余及容错性的特点,可谓是一个很好的大规模消息处理应用的解决方案(行为追踪,日志收集)。
基本架构组成
Kafka里几有如下大基本要素:
- Producer:消息生产者,向Kafka cluster内的Broker发送消息;位于客户端内
- Kafka cluster:包含了1个或多个broker的集群
- broker:消息中间件处理节点,一个broker就是一个Kafka节点,一个broker里会有1个或多个Topic
- Topic:主题,Kafka根据topic对消息进行归类;发布到Kafka集群的每条消息都需要指定一个topic
- ZooKeeper cluster:一个分布式服务协调框架,管理和协调整个Kafka 集群
- Consumer:消息消费者,向Kafka cluster内的Broker那读取消息;位于客户端内;每个Consumer属于一个特定的Consumer Group
- Consumer Group:消息消费者组,多个不同的Consumer Group可以消费同一个消息,但是同一个Consumer Group中的不同Consumer不能消费同一个消息
以上几个元素它们之间是如何协调运作的呢? Producer会将消息通过push 模式发布到到Kafka Clustr内的broker,consumer则通过监听把消息通过pull 模式从 broker 那订阅并消费。 而zookeeper则用来管理和协调整个Kafka 集群。

好,解释了这些基本、表面的概念,我们回到标题这一长串,“Kafka Topic Partition Offset”。Topic作为一个消息的逻辑概念,同类的消息会被存到同一个topic下;每个 topic 可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。那么为何topic下会有1个或则多个partition呢?
Partition
Partition 分区,在一个 topic 内,可以划分为1个或多个分区。
它其实是一个有序的消息队列,消息会按照按顺序被添加到一个叫做commit log的文件中;一个commit log文件就对应一个partition。同一个topic下不同分区包含的消息是不同的。
下图中的p0,p1,p2就是3个分区:

Offset
Offset 偏移量,是针对于单个partition存在的概念。partition中的消息不止一个,根据进来的顺序,都会分配到一个唯一的编号即offset,用来标示某个分区中的唯一的message。
比如上图中p0分区里的0,1就是两条消息,p1分区里的0,1,2就是三条消息。offset的顺序不跨分区,这个顺序只保证在同一个分区内的消息是有序的,不同的分区内消息的offset可能是相同的。
对于消费者来说,每次消费了分区内一个消息并且提交以后,就会保存当前消费了的最近的一个 offset记录,就不会再去消费已经消费过了的消息了。
为何要搞分区呢?
- 如果以消息日志文件的形式来保存,那么就会受到所在机器的文件系统大小的限制;Topic 分区之后,理论上一个topic可以处理任意数量的消息数据
- 提高并行度,针对大数据场景,kafka应用了分布式存储的思想,把Topic划分为很多个Partition,不同的分区还可以存在不同的集群机器节点上
参考链接
- https://kafka.apache.org/intro
- https://www.huaweicloud.com/product/dms.html
- https://blog.51cto.com/u_15281317/3007837
Kafka Topic Partition Offset 这一长串都是啥?的更多相关文章
- Kafka Topic Partition Replica Assignment实现原理及资源隔离方案
本文共分为三个部分: Kafka Topic创建方式 Kafka Topic Partitions Assignment实现原理 Kafka资源隔离方案 1. Kafka Topic创建方式 ...
- Kafka 如何读取offset topic内容 (__consumer_offsets)
众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并 ...
- kafka学习(四)-Topic & Partition
topic中partition存储分布 Topic在逻辑上可以被认为是一个queue.每条消费都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里.为了使得 Kafka的吞吐 ...
- kafka Topic 与 Partition
Topic在逻辑上可以被认为是一个queue队列,每条消息都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里.为 了使得Kafka的吞吐率可以水平扩展,物理上把topic分 ...
- Kafka 如何读取offset topic内容 (__consumer_offsets)(转发)
原文 https://www.cnblogs.com/huxi2b/p/6061110.html 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer ...
- Kafka设计解析(十二)Kafka 如何读取offset topic内容 (__consumer_offsets)
转载自 huxihx,原文链接 Kafka 如何读取offset topic内容 (__consumer_offsets) 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka ...
- [bigdata] kafka基本命令 -- 迁移topic partition到指定的broker
版本 0.9.2 创建topic bin/kafka-topics.sh --create --topic topic_name --partition 6 --replication-factor ...
- Kafka Cached zkVersion [62] not equal to that in zookeeper, skip updating ISR (kafka.cluster.Partition) 问题分析
我司业务Kafka集群是3节点(broker分别为10,20,30),每个Topic 3 Partition,3 Repilication的配置,早上起床突然发现所有Topic的Broker节点都变为 ...
- 【SparkStreaming学习之四】 SparkStreaming+kafka管理消费offset
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
随机推荐
- springboot:使用异步注解@Async的前世今生
在前边的文章中,和小伙伴一起认识了异步执行的好处,以及如何进行异步开发,对,就是使用@Async注解,在使用异步注解@Async的过程中也存在一些坑,不过通过正确的打开方式也可以很好的避免,今天想和大 ...
- 想学会SOLID原则,看这一篇文章就够了!
背景 在我们日常工作中,代码写着写着就出现下列的一些臭味.但是还好我们有SOLID这把'尺子', 可以拿着它不断去衡量我们写的代码,除去代码臭味.这就是我们要学习SOLID原则的原因所在. 设计的臭味 ...
- filter/backdrop-filter 毛玻璃效果
对于方式二采用的方式,如果存在边缘模糊程度不够,可以设置扩大伪元素范围(margin: -20px),父元素超出裁剪(overflow: hidden). <!DOCTYPE html> ...
- 一个程序的自我修养「GitHub 热点速览 v.22.19」
一个程序要诞生涉及前后端技术,比如,你可以用可视化网页搭建工具 tmagic-editor 完成前端部分,而后端部分的数据库以及数据处理可能就要用到 jsonhero-web 和 directus.知 ...
- BFC 是什么?
BFC 是什么? 本文写于 2020 年 7 月 17 日 总有同学问我:"这个 div 为什么会插出来?为什么 float 的 div 这么不好操作?".这其实就是没有深入理解 ...
- 为什么说 Gradle 是 Android 进阶绕不去的坎 —— Gradle 系列(1)
请点赞,你的点赞对我意义重大,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,欢迎 ...
- [补漏]shift&算法
题意:regular number 给你一个字符串,要你输出所有(每位都符合要求的)子串,输入时告诉你每位只能填的数集. 思路: bitsetc[x]存每个数字可以存在的字符串位的二进制集合.(如3可 ...
- ex_Lucas定理
Lucas定理(p为质数): \(C_n^m=C_{n/p}^{m/p}*C_{n\ mod\ p}^{m\ mod\ p}\) 可是p不为质数怎么办呢? ex_Lucas定理 (p不为质数) 思路 ...
- React简单教程-3-样式
前言 在上一章 React 简单教程-2-ts 和组件参数 中我们新建的子组件 Displayer 没有样式,显得平平无奇,这一篇我们将给他美化一下. CSS 文件 一般的做法,是在你的组件级目录下新 ...
- 机器学习-学习笔记(二) --> 模型评估与选择
目录 一.经验误差与过拟合 二.评估方法 模型评估方法 1. 留出法(hold-out) 2. 交叉验证法(cross validation) 3. 自助法(bootstrapping) 调参(par ...