1. 程式人生 > 實用技巧 >Kafka常用命令和核心概念

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拉取訊息