kafka集群及副本的概念

Posted z啵唧啵唧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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上

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

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机制,会让其他消费者来消费该分区.

以上是关于kafka集群及副本的概念的主要内容,如果未能解决你的问题,请参考以下文章

kafka分区及副本在broker的分配

Kafka副本的概念

kafka的安装部署及应用

kafka的安装部署及应用

Elasticsearch核心技术--- 基本概念(IndexTypeDocument集群节点分片及副本倒排索引)

Kafka架构及基本原理简析