0
点赞
收藏
分享

微信扫一扫

Kafka学习笔记三:kafka 单播和多播,broker,主题,分区,副本

小迁不秃头 2022-01-12 阅读 78

1.单播消息

如果多个消费者在同一个消费组,那么只有一个消费者可以收到订阅的topic中的消息

./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test --from-beginning --consumer-property group.id=testgroup1

2.多播消息

不同的消费组订阅同一个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=testgroup2

3.主题 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中选举产生一个新的leader
  • follower:接收leader同步的数据1.
  • isr:可以同步和已同步的节点会被存入到isr的集合中,如果isr中的节点性能较差,会被踢出isr集合

集群中有多个broker,创建主题是可以指明主题有多个分区(把消息拆分到不同的分区中存储),可以为分区创建多个副本,不同的副本存放在不同的broker里。

举报

相关推荐

0 条评论