kafka具有可靠儲存資料的特性,可用來儲存重要的支付資料, 或者與離線系統進行互動,系統可間歇性地載入資料,也可在停機維護後再次載入資料。
kafka的本職工作
資料寫入kafka後被寫到磁碟,並且進行備份以便容錯。直到完全備份,kafka才讓生產者認為完成寫入,即使寫入失敗kafka也會確保繼續寫入
kafka使用磁碟結構,具有很好的擴充套件性—50kb和50tb的資料在server上表現一致。
可以儲存大量資料,並且可通過客戶端控制它讀取資料的位置,您可認為kafka是一種高效能、低延遲、具備日誌儲存、備份和傳播功能的分布式檔案系統。
關於kafka提交日誌儲存和備份設計的更多細節,可以閱讀 這頁 。
kafka 流處理不僅僅用來讀寫和儲存流式資料,它最終的目的是為了能夠進行實時的流處理。
在kafka中,流處理器不斷地從輸入的topic獲取流資料,處理資料後,再不斷生產流資料到輸出的topic中去。
例如,零售應用程式可能會接收銷售和出貨的輸入流,經過**調整計算後,再輸出一串流式資料。
簡單的資料處理可以直接用生產者和消費者的api。對於複雜的資料變換,kafka提供了streams api。 stream api 允許應用做一些複雜的處理,比如將流資料聚合或者join。
這一功能有助於解決以下這種應用程式所面臨的問題:處理無序資料,當消費端**變更後重新處理輸入,執行有狀態計算等。
streams api建立在kafka的核心之上:它使用producer和consumer api作為輸入,使用kafka進行有狀態的儲存, 並在流處理器例項之間使用相同的消費組機制來實現容錯。
5 Kafka訊息順序保證
kafka訊息順序保證 kafka分布式的單位是partition,同乙個partition用乙個write ahead log組織,所以可以保證fifo的順序。不同partition之間不能保證順序。絕大多數使用者都可以通過message key來定義,因為同乙個key的message可以保證只傳...
5 Kafka生產過程分析
訊息傳送時都被傳送到乙個topic,其本質就是乙個目錄,而topic是由一些partition logs 分割槽日誌 組成,其組織結構如下圖所示 我們可以看到,每個partition中的訊息都是有序的,生產的訊息被不斷追加到partition log上,其中的每乙個訊息都被賦予了乙個唯一的offse...
5 Kafka訊息可靠性
在訊息中介軟體裡,有乙個非常重要的問題就是怎麼保證訊息不丟失,而這就是訊息的可靠性問題。1 acks 這個引數用於控制producer生產訊息的永續性。當一條訊息被提交,只要有任何乙個副本儲存了該訊息,並且副本存活,那麼就可以認為該訊息是不可丟失的。當producer傳送一條訊息給kafka集群時,...