提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • Kafka集群操作
  • 1.搭建kafka集群(三个broker)
  • 2.副本的概念---replication
  • 集群消费
  • 分区分消费组的集群消费中的细节
  • ⼀个partition只能被⼀个消费组中的⼀个消费者消费,⽬的是为了保证消费的顺序性



Kafka集群操作

1.搭建kafka集群(三个broker)

  • 创建三个server.properties⽂件
# 0 1 2
broker.id=2
// 9092 9093 9094
listeners=PLAINTEXT://192.168.65.60:9094
//kafka-logs kafka-logs-1 kafka-logs-2
log.dir=/usr/local/data/kafka-logs-2
  • 通过命令来启动三台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
  • 校验是否启动成功

进入到zk中查看/brokers/ids中过是否有三个znode(0,1,2)

2.副本的概念—replication

  • 副本是为了为主题中的分区创建多个备份,多个副本在kafka集群的多个broker中,会有⼀个
    副本作为leader,其他是follower。
./kafka-topics.sh --create --zookeeper 172.16.253.35:2181 --replicationfactor
3 --partitions 2 --topic my-replicated-topic
  • 查看topic情况:
# 查看topic情况
./kafka-topics.sh --describe --zookeeper 172.16.253.35:2181 --topic myreplicated-
topic

kafka 集群部署 kafka集群使用_kafka


leader:

  • kafka的写和读的操作,都发⽣在leader上。leader负责把数据同步给follower。当leader挂
    了,经过主从选举,从多个follower中选举产⽣⼀个新的leader

follower

  • 接收leader的同步的数据

isr:

  • 可以同步和已同步的节点会被存⼊到isr集合中。这⾥有⼀个细节:如果isr中的节点性能 较差,会被提出isr集合。

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

集群消费

1)向集群发送消息:

./kafka-console-consumer.sh --bootstrap-server
172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --frombeginning
--consumer-property group.id=testGroup1 --topic my-replicatedtopic

2)从集群中消费消息

./kafka-console-producer.sh --broker-list
172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --topic myreplicated-
topic

3)指定消费组来消费消息

./kafka-console-consumer.sh --bootstrap-server
172.16.253.38:9092,172.16.253.38:9093,172.16.253.38:9094 --frombeginning
--consumer-property group.id=testGroup1 --topic my-replicatedtopic

分区分消费组的集群消费中的细节

kafka 集群部署 kafka集群使用_big data_02

⼀个partition只能被⼀个消费组中的⼀个消费者消费,⽬的是为了保证消费的顺序性

  • ⼀个partition只能被⼀个消费组中的⼀个消费者消费,⽬的是为了保证消费的顺序性,但是多个partion的多个消费者消费的总的顺序性是得不到保证的,那怎么做到消费的总顺序性呢?
  • partition的数量决定了消费组中消费者的数量,建议同.个消费组中消费者的数量不要超过partition的数量,否则多的消费者消费不到消息
  • 如果消费者挂了,那么会触发rebalance机制(后⾯介绍),会让其他消费者来消费该分区