乐趣区

关于java:Kafka集群及副本的概念

大家好,我是尚影嫣🌷,一名 Java 后端程序媛。如果您喜爱我的文章,欢送点赞➕关注❤️,让咱们一起成为更好的咱们~

Kafka 集群及正本的概念

1. 搭建 kafka 集群,3 个 broker

新建 3 个 server.properties 文件:

  • server.properties

    broker.id=0 <br/>
    listeners=PLAINTEXT://192.168.65.60:9092 <br/>
    log.dir=/usr/local/data/kafka-logs

  • server1.properties

    broker.id=1 <br/>
    listeners=PLAINTEXT://192.168.65.60:9093 <br/>
    log.dir=/usr/local/data/kafka-logs-1

  • server2.properties

    broker.id=2 <br/>
    listeners=PLAINTEXT://192.168.65.60:9094 <br/>
    log.dir=/usr/local/data/kafka-logs-2

启动 3 台服务器:

./kafka-server-start.sh -daemon ../config/server0.properties <br/>
./kafka-server-start.sh -daemon ../config/server1.properties <br/>
./kafka-server-start.sh -daemon ../config/server2.properties

搭建完后通过查看 zk 中的 /brokers/ids,查看是否启动胜利。

2. 正本的概念

正本是对分区的备份。在集群中,不同的正本会被部署在不同的 broker 上。创立 1 个主题,2 个分区、3 个正本,命令如下:

./kafka-topics.sh –create –zookeeper 172.16.253.35:2181 –replication-factor 3 –partitions 2 –topic my-replicated-topic

通过查看主题信息,其中的要害数据:

  • replicas:以后正本存在的 broker 节点;
  • leader:正本里的概念;
    每个 partition 都有⼀个 broker 作为 leader。
    音讯发送方依据正本的 leader 是在哪个 broker 下面,决定要把音讯发给哪个 broker。正本中的 leader 专门用来接管音讯。
    接管到音讯,其余 follower 通过 poll 的形式来同步数据。
  • follower:leader 解决所有针对这个 partition 的读写申请,而 follower 被动复制 leader,不提供读写(次要是为了保障多正本数据与生产的⼀致性),如果 leader 所在的 broker 挂掉了,那么就会进行新 leader 的选举。

通过 kill 掉 leader 后再查看主题状况:

kill 掉 leader <br/>

ps -aux | grep server.properties <br/>
kill 17631 <br/>

查看 topic 状况 <br/>

./kafka-topics.sh –describe –zookeeper 172.16.253.35:2181 –topic my-replicated-topic

  • isr:
    能够同步的 broker 节点和已同步的 broker 节点,寄存在 isr 汇合中。

3.broker、主题、分区、正本

kafka 集群中由多个 broker 组成
一个 broker 中寄存一个 topic 的不同 partition——正本

4.kafka 集群音讯的发送

./kafka-console-producer.sh –broker-list 172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 –topic my-replicated-topic <br/>

kill 掉 leader <br/>

ps -aux | grep server.properties <br/>
kill 17631 <br/>

查看 topic 状况 <br/>

./kafka-topics.sh –describe –zookeeper 172.16.253.35:2181 –topic myreplicated-topic

5.kafka 集群音讯的生产

./kafka-console-consumer.sh –bootstrap-server 172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 –from-beginning –topic my-replicated-topic

6. 对于分区生产组消费者的细节

图中 Kafka 集群有两个 broker,每个 broker 中有多个 partition。一个 partition 只能被一个生产组里的某个消费者生产,从而保障生产程序。Kafka 只在 partition 的范畴内保障音讯生产的部分程序性,不能在同一个 topic 中的多个 partition 中保障总的生产程序性。一个消费者能够生产多个 partition。生产组中消费者的数量不能比一个 topic 中的 partition 数量多,否则多进去的消费者生产不到音讯。

退出移动版