kafka简单的入门案例 kafka应用实例( 三 )


多播消费
一条消息能被多个消费者消费的模式,类似publish-subscribe模式费,针对Kafka同一条消息只能被同一个消费组下的某一个消费者消费的特性,要实现多播只要保证这些消费者属于不同的消费组即可 。我们再增加一个消费者,该消费者属于testGroup-2消费组,结果两个客户端都能收到消息
bin/kafka-console-consumer.sh –bootstrap-server 192.168.65.60:9092 –consumer-property group.id=testGroup-2 –topic test
查看消费组名
bin/kafka-consumer-groups.sh –bootstrap-server 192.168.65.60:9092 –list
查看消费组的消费偏移量
bin/kafka-consumer-groups.sh –bootstrap-server 192.168.65.60:9092 –describe –group testGroup
current-offset:当前消费组的已消费偏移量
log-end-offset:主题对应分区消息的结束偏移量(HW)
lag:当前消费组未消费的消息数
主题Topic和消息日志Log可以理解Topic是一个类别的名称,同类消息发送到同一个Topic下面 。对于每一个Topic,下面可以有多个分区(Partition)日志文件:
Partition是一个有序的message序列,这些message按顺序添加到一个叫做commit log的文件中 。每个partition中的消息都有一个唯一的编号,称之为offset,用来唯一标示某个分区中的message 。
每个partition,都对应一个commit log文件 。一个partition中的message的offset都是唯一的,但是不同的partition中的message的offset可能是相同的 。
kafka一般不会删除消息,不管这些消息有没有被消费 。只会根据配置的日志保留时间(log.retention.hours)确认消息多久被删除,默认保留最近一周的日志消息 。kafka的性能与保留的消息数据量大小没有关系,因此保存大量的数据消息日志信息不会有什么影响 。
每个consumer是基于自己在commit log中的消费进度(offset)来进行工作的 。在kafka中,消费offset由consumer自己来维护;一般情况下我们按照顺序逐条消费commit log中的消息,当然我可以通过指定offset来重复消费某些消息,或者跳过某些消息 。
这意味kafka中的consumer对集群的影响是非常小的,添加一个或者减少一个consumer,对于集群或者其他consumer来说,都是没有影响的,因为每个consumer维护各自的消费offset 。
创建多个分区的主题:
bin/kafka-topics.sh –create –zookeeper 192.168.65.60:2181 –replication-factor 1 –partitions 2 –topic test1
查看下topic的情况
bin/kafka-topics.sh –describe –zookeeper 192.168.65.60:2181 –topic test1
leader节点负责给定partition的所有读写请求 。replicas 表示某个partition在哪几个broker上存在备份 。不管这个几点是不是”leader“,甚至这个节点挂了,也会列出 。isr 是replicas的一个子集,它只列出当前还存活着的,并且已同步备份了该partition的节点 。增加topic的分区数量(目前kafka不支持减少分区):
bin/kafka-topics.sh -alter –partitions 3 –zookeeper 192.168.65.60:2181 –topic test
可以这么来理解Topic,Partition和Broker
一个topic,代表逻辑上的一个业务数据集,比如按数据库里不同表的数据操作消息区分放入不同topic,订单相关操作消息放入订单topic,用户相关操作消息放入用户topic,对于大型网站来说,后端数据都是海量的,订单消息很可能是非常巨量的,比如有几百个G甚至达到TB级别,如果把这么多数据都放在一台机器上肯定会有容量限制问题,那么就可以在topic内部划分多个partition来分片存储数据,不同的partition可以位于不同的机器上,每台机器上都运行一个Kafka的进程Broker 。
为什么要对Topic下数据进行分区存储?
1、commit log文件会受到所在机器的文件系统大小的限制,分区之后可以将不同的分区放在不同的机器上,相当于对数据做了分布式存储,理论上一个topic可以处理任意数量的数据 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: