kafka 一 kafka框架介紹(生產者篇)

2021-08-31 18:32:53 字數 1905 閱讀 6525

繼爬蟲之後,kafka的介紹。

【kafka】一、kafka框架介紹(消費者篇):

【kafka】二、kafka框架介紹(消費者篇):

另一篇解決報錯的文章:

【kafka】報錯:advertised.listeners引數的重要性(外部訪問區域網kafka)

隔了一段時間才來寫這篇文章,因為實在不知道該怎麼來給這篇文章定義,感覺想說的東西需要用到一些基礎知識,但是如果把這些基礎知識都講了,需要很大的篇幅又不太合理,所以我就不寫基礎概念了,就寫我覺得需要關注的一些點吧。

簡單定義:

kafka能幹啥?(官網的圖)

有4個東西跟kafka集群(多個brokers組成kafkacluster)互動,producers(生產者)consumers(消費者)connectors(我也不知道這個中文要叫什麼,聯結器?)stream processors(流程式),箭頭代表互動關係(就是資料從哪來到哪去)。

kafka中資料已topic(主題)來維護,一般乙個業務會有乙個topic,乙個topic存的資料格式應該都是一樣的。

1、分割槽數、副本數

每個topic可以設定分割槽數量和副本數量,一般是這樣,分割槽數越多,效能越好(但是也不是寫個幾百幾萬效能就上天了,想想也是不可能的),副本數越多,效能越差,但是安全性越好(不容易丟資料)。

建立分割槽為10個,副本數為1個的topic:

bin/kafka-topics.sh --create \ 

--topic program_version_1 \

--zookeeper 第一台zk:2181,第二台zk:2181,第三台zk:2181/zk上的路徑 \

--replication-factor 1 --partitions 10

建議:將kafka可以配置的引數都看一遍,重點要理解kafka可以設定哪些東西,而不要把重心放在某乙個框架的api上,因為不同的api可能提供的設定相同引數方式都不太一樣!!

2、生產者發資料的配置

官網配置:

提幾個比較需要關注的:

-1.acks:傳送訊息是否等待brokers的返回訊息,值可以是[all, -1, 0, 1](all和-1是效果是一樣的)

-2.retries:傳送資料失敗的重試次數,如果設定了重試次數,該max.in.flight.requests.per.connection引數為1的情況下才能繼續保證分區內有順序(kafka的topic在分區內資料是時間先後順序的,但是同乙個topic不同分割槽中的資料就無序了)

-3.retry.backoff.ms:資料傳送失敗,重試的時間間隔

-4.compression.type-5.batch.size:當資料達到這個大小(以位元組為單位),生產者會把相同分割槽的資料一次性傳送,如果資料量一直沒有達到批次大小,生產者也會觸發某些機制自動傳送資料,如果使用壓縮,那可以適當調大這個值,當然這個值越大,會越消耗記憶體

-6.max.request.size:乙個批次資料量大小,可以通過該引數來限制每個批次最大傳送的資料條數,該值越大越消耗記憶體

最後,kafka自帶測試生產者:

bin/kafka-console-producer.sh --broker-list broker1:埠1,broker2:埠2,broker3:埠3 --topic 傳送到哪個topic上

Kafka學習 一 Kafka背景及架構介紹

kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,使用scala語言編寫,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,多訂閱者,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料 實時性的計算 降低系統組網複雜度。降低程式設計複雜度,各個子系統不...

Kafka學習 一 Kafka背景及架構介紹

kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,使用scala語言編寫,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,多訂閱者,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料 實時性的計算 降低系統組網複雜度。降低程式設計複雜度,各個子系統不...

Kafka 溫故 一 Kafka背景及架構介紹

kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,使用scala語言編寫,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,多訂閱者,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料 實時性的計算 1.降低系統組網複雜度。2.降低程式設計複雜度,各個...