繼爬蟲之後,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.降低程式設計複雜度,各個...