ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kafka学习(三)kafka基础理论

2021-10-28 23:03:47  阅读:180  来源: 互联网

标签:PS 消费 -- partition kafka 学习 基础理论 consumer


一、消费模式的选择

  kafka常见的消费模式有两种:

  • 单播模式:一条消息只能被某一个消费者消费的模式。
  • 多播模式:一条消息能被多个消费者组中的消费者消费的模式。

  PS:记录消费偏移量是以为单位进行的,增删消费者不影响。【会在下面进行说明】

单播模式

  定义:一条消息只能被某一个消费者消费的模式,类似队列的模式。

  实现方式:让所有消费者在同一个消费组里即可

多播模式

  定义:一条消息能被多个消费者消费的模式,类似发布订阅模式。

  实现方式:让消费者属于不同的消费组即可

二、查看消费组的消费偏移量

  消费偏移量:指的是哪些消息已经被消费了,做一个记录。

##1、创建一个消费者组,监听'zhTest'这一Topic
kafka-console-consumer.bat --bootstrap-server localhost:9092 --consumer-property group.id=zhTestGroup1 --topic zhTest

##2、查看消费者组列表
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --list

##3、查看消费者组'zhTestGroup1'的消费偏移量
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group zhTestGroup1

  参数解析如下:

  • current-offset:当前消费组的已消费偏移量
  • log-end-offset:主题对应分区消息的结束偏移量
  • lag:当前消费组未消费的消息数

三、Topic【主题】和Log【消息数据日志】

  可以理解Topic是一个类别的名称,同类消息发送到同一个Topic下面。对于每一个Topic,下面可以有多个分区(Partition)日志文件:

Partition【分区】

  定义:一个有序的消息序列。

  作用:分片储存数据。不同的partition可以位于不同的机器上,方便数据横向扩展,提高吞吐量和并行度

  PS:分区对于组内消费者是单播的,对于不同组可以实现多播

  PS:当发消息时不指定分区,kafka选分区的原理:对Key进行hash运算得到的散列值再对分区进行取模运算

Offset【偏移量】

  定义:每个partition中消息的唯一编号。

  作用:用来唯一标示某个分区中的消息。

  PS:一个partition中的message的offset都是唯一的,但是不同的partition中的message的offset可能是相同的

  PS:kafka一般不会删除消息,不管这些消息有没有被消费。只会根据配置的日志保留时间(log.retention.hours)来决定消息多久被删除,默认保留7天的日志消息。

  PS:kafka的性能与保留的消息数据量大小没有关系,因此保存大量的数据消息日志信息不会有什么影响。

  PS:每个consumer是基于自己在commit log【如数据目录下的00000000000000000000.log文件】中的消费进度(offset)来进行工作的。在kafka中,消费offset由consumer自己来维护。【这意味kafka中的consumer对集群的影响是非常小的,添加一个或者减少一个consumer,对于集群或者其他consumer 来说,都是没有影响的,因为每个consumer维护各自的消费offset。】

四、查看Topic信息

  当我们要了解kafka中Topic的分区、副本、或者是broker存活情况时,就需要用到如下命令去查看了:

##查看zookeeper【localhost:2181】下的,topic为'zhTest'的信息
##PS:因为topic的元数据是保存在ZK上的,所以查看信息就去ZK上面去查 kafka-topics.bat --describe --zookeeper localhost:2181 --topic zhTest

  以下是输出内容的解释,第一行是所有分区的概要信息之后的每一行表示每一个partition的信息

  • Leader:节点负责给定partition的所有读写请求。【PS:图中的0表示的是leader节点为broker.id为0的机器
  • Replicas:表示某个partition在哪几个broker上存在备份。不管这个节点是不是"leader",甚至这个节点挂了,也会列出。
  • Isr:是replicas的一个子集,它只列出当前还存活着的,并且已同步备份了该partition的节点

标签:PS,消费,--,partition,kafka,学习,基础理论,consumer
来源: https://www.cnblogs.com/riches/p/15478106.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有