Kafka常用命令和核心概念

1.命令

启动:

zookeeper:
bin/zkServer.sh start
kafka:
bin/kafka-server-start.sh -daemon config/server.properties

查看topic:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

查看消费者组:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

创建topic:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 1 --topic xxx

启动生产者:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic xxx

启动消费者:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic xxx --from-beginning

2.核心概念

1.Broker

集群中的一个实例,多个broker中有一个是leader,其他都是follower

2.Consumer Group

同一个group的consumer可以并行消费同一个topic的消息,但是不会重复消费(相当于多个线程去消费,提高了消费速度)

如果同一个topic需要被多次消费,可以设多个consumer group来实现,分别消费互不影响

3.Topic

特定主题,区别不同消息的类型,消息以主题为单位进行归类

4.Partition

Kafka采用分区方式让消费者并行消费,提高吞吐能力,每个分区有多个副本保证高可用

一个分区只能被同组的一个consumer消费,但是一个consumer可以消费多个分区

消费效率最高的情况是分区数和consumer数量相同,每个consumer消费一个分区

当consumer数量大于分区数的时候,就会有consumer闲置

5.Replication

副本存在leader和follower之分,活跃的称为leader,其他的是follower

每个分区都有多个副本,只有一个是leader,其他是follower

消息进来先存入leader,然后从leader复制到follower,只有复制全部完成,consumer才可以消费此条消息,消费也是从leader读取

由于leader做了大量工作,如果不同分区的leader replication在集群的broker上分布不均匀,就会造成负载不均衡

Kafka通过轮询算法保证leader均匀分布

副本均匀分布在broker上,同一个分区的副本不会在同一个broker上

同一个分区的副本数不能多于broker数量,没有意义

6.分区平衡

AR:assigned replication 已分配副本,每个分区都有自己的AR列表,里面存储这个分区最初分配的所有副本,AR列表不会变化,除非增加分区

PR:优先副本,AR列表中的第一个副本就是优先副本,而且永远是优先副本,最初的时候优先副本和leader副本是同一个

ISR:in sync replication 同步副本,每个分区有自己的ISR列表,会根据同步情况动态变化

最初ISR和AR列表一致,如果某个节点挂掉,或者某个节点的follower副本落后leader副本太多,就会被从ISR列表移除,此时ISR和AR就不再一致

同步滞后过多的副本组成OSR Out-of-Sync Replicas

分区平衡操作其实就是让leader副本和优先副本保持一致的操作

7.分区读写

每个分区都是有序不可变的

Kafka只能保证分区的消费顺序,不能保证topic消费顺序

consumer可以重置offset到之前的位置,可以以任何顺序消费,不一定线性后移

8.Producer

消息生产者,向broker发送消息

9.Consumer

消费者,从broker拉取消息

posted @ 2020-10-16 11:00  马晟  阅读(247)  评论(0编辑  收藏  举报