kafka集群及副本的概念

kafka集群及副本的概念

1.搭建kafka集群,3个broker

  • 创建三个server.properties文件
# 0 1 2  修改下面这三个地方
broker.id = x  # broker id
listeners=PLAINTEXT://host:post  # kafka 端口主机配置
log.dir=xxxxx  # kafka日志存放位置
  • 通过三个命令来启动三台broker
./kafka-server-start.sh -daemon ../config/server.properties
./kafka-server-start.sh -daemon ../config/server1.properties
./kafka-server-start.sh -daemon ../config/server2.properties
  • jps命令查看即可看见开了三台kafka

在这里插入图片描述

2.副本的概念

  • 副本是对分区的备份。在集群中,不同的副本会被部署在不同的broker上。下⾯例⼦:创建1个主题,2个分区、3个副本。(有多少个集群创建多少个副本)
# 在创建主题的时候除了指明了主题的分区数目之外,还指明了副本数
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 2 --topic my-replicated-topic
  • 创建后的效果

搭建三个broker的kafka,然后给每一个broker创建两个分区,然后给每个分区创建三个副本,不同的副本分布在不同的broker上

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kSN0kTIO-1656256296761)(C:/Users/zhengbo/%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka/image-20220617234041666.png)]

  • 副本是为了主题中的分区创建多个副本,多个副本在kafka集群的多个broker中,会有一个副本作为leader,其他都是follower
  • 生产者生产消息给leader,消费者消费消息也是从leader进行消费
  • leader:kafka的读和写操作都发生在leader上,leader负责把数据同步给follower,当leader挂了,经过主从选举,从多个follower中选举产生一个新的leader
  • follower:接收leader同步的数据
  • isr:可以同步和已经同步的节点会被存放到isr集合当中,有一个细节就是说,如果isr中的节点性能较差,会被踢出isr集合,选leader会从isr当中去选

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RF2D4OF-1656256296762)(C:/Users/zhengbo/%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka/image-20220617214820156.png)]

3.borker,主题,分区,副本之间的联系

  • 集群当中有多个broker的时候,创建主题的时候可以明确指明主题有多个分区(把消息拆分到不同的分区当中),同时可以为每一个分区创建多个副本,不同的副本分配到不同的broker当中(最好的就是有多少个broker就创建多少个副本,这样的话例如上面的例子,我们有三个broker,同时我们创建三个副本,那么刚好给每一个broker分配一个副本)
  • 发配副本,在众多的副本当中,有一个leader,当leader挂了之后,在其他副本当中选出一个新的leader

4.kafka集群的消费问题

  • kafka集群消息的发送
./kafka-console-producer.sh --broker-list
localhost:9092,localhost:9093,localhost:9094 --topic my-replicated-topic
  • kafka集群消息的消费
./kafka-console-consumer.sh --bootstrap-server
localhost:9092,localhost:9093,localhost:9094 --from-beginning --topic my-replicated-topic
  • 带上消费组进行消费
./kafka-console-consumer.sh --bootstrap-server
localhost:9092,localhost:9093,localhost:9094 --from-beginning --consumer-property group.id=testGroup1 --topic my-replicated-topic

  • 一个partition最多只能被一个消费组的中的一个消费者进行消费(单播消费),可以保证消费的顺序,因为消息的发送是有顺序的,所以为了让消费也变得有顺序,所以就采用了单播消费机制,来保证消费的顺序性.
  • 消费组中消费者的数量不能比topic中partition中的数量多,否者多出来的消费者消费不到消息.
  • 如果消费者挂了,那么就会触发rebalance机制,会让其他消费者来消费该分区.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值