一.kafka概述
kafka是linkedin於2023年12月份建立的開源訊息系統,它主要用於處理活躍的流式資料。活躍的流式資料在web**應用中非常常見,這些活動資料報括頁面訪問量(page view)、被檢視內容方面的資訊以及搜尋情況等內容。 這些資料通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計分析。
1.1 kfka部署結構:
1.2 kafka關鍵字:
•broker : kafka訊息伺服器,訊息中心。乙個broker可以容納多個topic。
•producer :訊息生產者,就是向kafka broker發訊息的客戶端。
•consumer :訊息消費者,向kafka broker取訊息的客戶端。
•zookeeper :管理producer,broker,consumer的動態加入與離開。
•topic :可以為各種訊息劃分為多個不同的主題,topic就是主題名稱。producer可以針對某個主題進行生產,consumer可以針對某個主題進行訂閱。
•consumer group: kafka採用廣播的方式進行訊息分發,而consumer集群在消費某topic時, zookeeper會為該集群建立offset消費偏移量,最新consumer加入並消費該主題時,可以從最新的offset點開始消費。
•partition:kafka採用對資料檔案切片(partition)的方式可以將乙個topic可以分布儲存到多個broker上,乙個topic可以分為多個partition。在多個consumer併發訪問乙個partition會有同步鎖控制。
(圖2)
1.3 訊息收發流程:
•啟動zookeeper及broker.
•producer連線broker後,將訊息發布到broker中指定topic上(可以指定patition)。
•broker集群接收到producer發過來的訊息後,將其持久化到硬碟,並將該訊息保留指定時長(可配置),而不關注訊息是否被消費。
•consumer連線到broker後,啟動訊息幫浦對broker進行偵聽,當有訊息到來時,會觸發訊息幫浦迴圈獲取訊息,獲取訊息後zookeeper將記錄該consumer的訊息offset。
1.4 kafka特性:
•高吞吐量
•負載均衡:通過zookeeper對producer,broker,consumer的動態加入與離開進行管理。
•拉取系統:由於kafka broker會持久化資料,broker沒有記憶體壓力,因此,consumer非常適合採取pull的方式消費資料
•動態擴充套件:當需要增加broker結點時,新增的broker會向zookeeper註冊,而producer及consumer會通過zookeeper感知這些變化,並及時作出調整。
•訊息刪除策略:資料檔案將會根據broker中的配置要求,保留一定的時間之後刪除。kafka通過這種簡單的手段,來釋放磁碟空間。
二. kafka啟動命令:
啟動zookeeper服務:
zookeeper-server-start.bat ../../config/zookeeper.properties
啟動broker服務:
kafka-server-start.bat ../../config/server.properties
通過zookeeper的協調在broker中建立乙個topic(主題)
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testtopic
查詢當前broker中某個指定主題的配置資訊
kafka-run-class.bat kafka.admin.topiccommand --describe --zookeeper localhost:2181 --topic testtopic
啟動乙個資料生產者producer
kafka-console-producer.bat --broker-list localhost:9092 --topic testtopic
啟動乙個資料消費者consumer
kafka-console-consumer.bat --zookeeper localhost:2181 --topic testtopic --from-beginning
zookeeper配置檔案,zookeeper.properties配置片段
broker配置檔案,server.properties配置片段
kafka基本操作例項
1 啟動命令 任意節點建立 nohup kafka server start.sh 2 建立topic kafka topics.sh create zookeeper hadoop1 2181,hadoop2 2181,hadoop3 2181 replication factor 3 parti...
Kafka專案經驗
1.kafka 壓測 用 kafka 官方自帶的指令碼,對 kafka 進行壓測。kafka 壓測時,可以檢視到哪個地方出 現了瓶頸 cpu,記憶體,網路 io 一般都是網路 io 達到瓶頸。kafka consumer perf test.sh kafka producer perf test.s...
Kafka 集群 Golang 應用例項
專案見 kafka cluster example 這個例項做了些什麼?搭建了擁有 3 節點 kafka 3 節點 zookeeper 的 docker 集群服務 分別建立了 1 個訊息發布者和 2 個相同消費組的訊息訂閱者的 docker 應用 使用ab進行併發測試,驗證該例項訊息的訂閱 發布功能...