Ping 使用 `Internet` 控制消息協議(`ICMP`)來測試主機之間的連接。當用戶發送一個 `ping` 請求時,則對應的發送一個 `ICMP Echo` 請求消息到目標主機,並等待目標主機回覆一個 `ICMP Echo` 回應消息。如果目標主機接收到請求並且網路連接正常,則會返回一個回... ...
Kafka集群 版本:V3.5.1
名稱 | Node1 | Node2 | Node3 |
---|---|---|---|
IP | 172.29.145.157 | 172.29.145.182 | 172.29.145.183 |
(1)查看Kraft集群中的狀態以及Leader節點,投票節點
使用--status可以查看集群選舉次數/水位線以及投票節點等
使用--replication可以查看Ledaer和Follower分佈
使用kafka-metadata-quorum.sh
./kafka-metadata-quorum.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 describe --replication
./kafka-metadata-quorum.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 describe --status
(2)查看Kraft集群中的Topic
使用--list可以查看所有的topic
使用--describe --topic topicname可以查看指定topic的分區狀態和副本同步狀態
使用kafka-topics.sh
./kafka-topics.sh --list --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092
./kafka-topics.sh --describe --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1
(3)啟動與關閉Kraft集群
啟動集群時一定需要添加--daemon參數以後臺守護進程運行
使用kafka-server-start.sh
使用kafka-server-stop.sh
./kafka-server-start.sh -daemon ../config/kraft/server.properties
啟動後可以使用jps來查看kafka集群是否啟動成功
關閉集群也需要加上參數server.properties
./kafka-server-stop.sh ../config/kraft/server.properties
(4)測試集群性能
使用kafka-producer-perf-test.sh生產數據
使用kafka-consumer-perf-test.sh消費數據
./kafka-producer-perf-test.sh --producer-props bootstrap.servers=172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1 --num-records 1000000 --record-size 4096 --throughput 50000
--topic指定topic
--num-records指定生產者產生的消息數量
--record-size指定一條消息的大小KB為單位
--throughput指定生產者每秒寫入的消息數量限制(吞吐量),-1則為不限制
反饋的指標是生產者發送了一百萬條消息,每秒生產消息15377條(生產速率60MB/s),平均時延394毫秒,後續就是各種時延的分佈範圍
./kafka-consumer-perf-test.sh --topic test-topic1 --messages 1000000 --fetch-size 40000 --broker-list 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092
使用--topic指定topic
使用--messages指定需要消費的消息數量
使用--fetch-size指定一次獲取的消息總大小
使用broker-list來指定消費的broker
反饋的指標是 Kafka集群消費100萬條消息用時23秒,消息總大小3906MB,平均每秒消費速率168MB,消息總數量1000015條,每秒消費消息數量43185條
(5)命令行驗證生產實時消費
使用kafka-console-producer.sh實時生產消息
使用kafka-console-consumer.sh實時消費消息
./kafka-console-producer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2
./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2
同時在Kafka管控平臺上也能夠實時查詢到test-topic2上的消息
同時我們也可以指定offset來使消費者從指定offset開始消費,對於生產環境有利於故障恢復
./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2 --partition 1 --offset 2
可以看到由於輸入的消息key相同所以消息都分到了partition1上,所以在消費消息時需要指定分區partition1,然後指定offset消息位移量2,就可以讀取到offset=2對應的消息3以及之後的所有消息了
(6)查詢消費者組信息
使用kafka-consumer-groups.sh
./kafka-consumer-groups.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --list
./kafka-consumer-groups.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --group perf-consumer-91301 --describe
通過--list查詢到消費者組列表再通過--describe查詢具體信息
可以看到在test-topic1主題上的partition5和partition0的Lag為18,代表著兩個分區還有18條消息沒有消費,通過kafka-console-consumer.sh嘗試消費partition5的剩餘18條消息
./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1 --group perf-consumer-91301
ps:很多很多消息,因為輸入的時候一條消息的大小由--record-size決定,設置為4096KB...
此時再通過describe查看消費者組情況看在partition5和partition0上是否還有消息Lag
可以看到消息都消費完了,Lag也已為0,再執行相同的命令只會等待而不會繼續輸出消息