摘要: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记录,就不会再去消费已经消费过了的消息了。

为何要搞分区呢?

  1. 如果以消息日志文件的形式来保存,那么就会受到所在机器的文件系统大小的限制;Topic 分区之后,理论上一个topic可以处理任意数量的消息数据
  2. 提高并行度,针对大数据场景,kafka应用了分布式存储的思想,把Topic划分为很多个Partition,不同的分区还可以存在不同的集群机器节点上

参考链接

  1. https://kafka.apache.org/intro
  2. https://www.huaweicloud.com/product/dms.html
  3. https://blog.51cto.com/u_15281317/3007837

点击关注,第一时间了解华为云新鲜技术~

Kafka Topic Partition Offset 这一长串都是啥?的更多相关文章

  1. Kafka Topic Partition Replica Assignment实现原理及资源隔离方案

    本文共分为三个部分:   Kafka Topic创建方式 Kafka Topic Partitions Assignment实现原理 Kafka资源隔离方案   1. Kafka Topic创建方式 ...

  2. Kafka 如何读取offset topic内容 (__consumer_offsets)

    众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并 ...

  3. kafka学习(四)-Topic & Partition

    topic中partition存储分布 Topic在逻辑上可以被认为是一个queue.每条消费都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里.为了使得 Kafka的吞吐 ...

  4. kafka Topic 与 Partition

    Topic在逻辑上可以被认为是一个queue队列,每条消息都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里.为 了使得Kafka的吞吐率可以水平扩展,物理上把topic分 ...

  5. Kafka 如何读取offset topic内容 (__consumer_offsets)(转发)

    原文  https://www.cnblogs.com/huxi2b/p/6061110.html 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer ...

  6. Kafka设计解析(十二)Kafka 如何读取offset topic内容 (__consumer_offsets)

    转载自 huxihx,原文链接 Kafka 如何读取offset topic内容 (__consumer_offsets) 众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka ...

  7. [bigdata] kafka基本命令 -- 迁移topic partition到指定的broker

    版本 0.9.2 创建topic bin/kafka-topics.sh --create --topic topic_name --partition 6 --replication-factor ...

  8. 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节点都变为 ...

  9. 【SparkStreaming学习之四】 SparkStreaming+kafka管理消费offset

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

随机推荐

  1. mybatis添加代码出现是第几条数据

  2. CentOS 7 执行 yum 命令失败问题的排查方法

    一个执着于技术的公众号 简介 本文主要为大家讲解 CentOS 7系统中执行yum命令失败等常见问题的排查方法. 1.执行yum命令报404错误 1)检查yum仓库是否配置正确,可以到阿里云下载rep ...

  3. XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  4. cobalt strike4.4的下载和使用

    cobalt strike4.4的下载和使用 cobalt strike4.4下载和汉化 首先下载cobaltstrike.jar yunzhongzhuan.com/#sharefile=cZ5vo ...

  5. 【多线程】JUC版的CopyOnWriteArrayList

    CopyOnWriteArrayList CopyOnWriteArrayList适合于多线程场景下使用,其采用读写分离的思想,读操作不上锁,写操作上锁,且写操作效率较低. CopyOnWriteAr ...

  6. 无线:WEP

    WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络.不过密码分析学家已经找出 W ...

  7. Git中的三种对象

    1.Git中有三种对象 commit 每执行一次git commit,git都会对当前工作目录的所有文件生成一次镜像,工作区下的目录对应的对象是tree,工作区下的文件对应的对象是blob,tree下 ...

  8. 5分钟快速搭建一个springboot的项目

      现在开发中90%的人都在使用springboot进行开发,你有没有这样的苦恼,如果让你新建一个springboot开发环境的项目,总是很苦恼,需要花费很长时间去调试.今天来分享下如何快速搭建. 一 ...

  9. 第06组 Beta冲刺 (4/5)

    目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.曾丽莉 4.鲍凌函 5. 董翔云 6.黄少丹 7.杜筱 8.詹鑫冰 9.曹兰英 10.吴沅静 1.3 冲刺成果展示 1.1 ...

  10. 绿色城市智慧运营:Web 3D 垃圾分类 GIS 系统

    前言 感谢所有为上海疫情奉献的人,祈求上海疫情早日清零,中国加油,上海加油! <上海市生活垃圾管理条例>施行至今已有两年多,上海市民践行绿色低碳理念.主动参与生活垃圾分类的习惯基本养成,分 ...