kafka專案例項

2022-07-01 08:33:11 字數 2429 閱讀 7573

一.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進行併發測試,驗證該例項訊息的訂閱 發布功能...