如果多个消费者在同一个消费组,那么只有一个消费者可以收到订阅的topic中的消息
./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test --from-beginning --consumer-property group.id=testgroup12.多播消息
不同的消费组订阅同一个topic,那么不同的消费组中只有一个消费者能收到消息。
./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test --from-beginning --consumer-property group.id=testgroup1 ./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test --from-beginning --consumer-property group.id=testgroup23.主题 topic
kafka通过topic将消息进行分类,不同的topic会被订阅该topic的消费者消费
但是有个问题,如果说这个topic中的消息非常多,多到需要几个T来存,因为消息是保存在log日志文件中的,为了解决这个问题,kafka给出分区解决
4.分区 partition
通过partition将一个topic中的消息分区来存储
分区存储,可以统一解决存储文件过大的问题提供了读写的吞吐量,读和写可以同时在多个分区中进行
创建多分区主题:
./kafka-topics.sh --zookeeper localhost:2181 --create --topic test --replication-factor 3 --partitions 2
kafka中消息日志文件中保存的内容:
0000.log:文件中保存的就是消息__consumer_offsets-49:kafka内部自己创建了__consumer_offsets主题 包含了50个分区,这个主题用来存放消息的偏移量,也就是说每个消费者会把消费的肢体的偏移量自主上报给kafka中的默认主题,至于提交到哪个分区,通过hash函数(默认为什么设置50个分区:因为可能会接收高并发的请求,可以通过 offsets.topic.num.partition修改)
5.副本副本是对分区的备份,在集群中,不同的副本会被部署在不同的broker上
副本是为主题中的分区创建多个备份,多个备份在kafka集群的多个broker中,会有一个副本作为leader,其他follower
leader:kafka的写和读的 *** 作,都发生在leader上,leader负责把数据同步给follower,当leader挂了,经过主从选举,从多个follower中选举产生一个新的leaderfollower:接收leader同步的数据1.isr:可以同步和已同步的节点会被存入到isr的集合中,如果isr中的节点性能较差,会被踢出isr集合
集群中有多个broker,创建主题是可以指明主题有多个分区(把消息拆分到不同的分区中存储),可以为分区创建多个副本,不同的副本存放在不同的broker里。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)