其他分享
首页 > 其他分享> > kafka学习(三)kafka基础理论

kafka学习(三)kafka基础理论

作者:互联网

一、消费模式的选择

  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

  参数解析如下:

三、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的信息

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