瞭解 Kafka
經常聽後端童鞋提到Kafka
這個詞,加上業務慢慢有了交集,對Kafka
的好奇越來越強烈。索性花點時間,一探究竟,順便擴充套件一下技能樹。
一、Kafka 是什麼?
Kafka
是分散式釋出-訂閱訊息系統。它最初由LinkedIn
公司開發,之後成為Apache
專案的一部分。Kafka
是一個分散式的,可劃分的,冗餘備份的永續性的日誌服務。
它主要用於處理活躍的流式資料。
二、簡單理解
舉個ofollow,noindex">例子
,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者 1 秒鐘生產 100 個雞蛋,消費者 1 秒鐘只能吃 50 個雞蛋,那要不了一會,消費者就吃不消了(訊息堵塞,最終導致系統超時),消費者拒絕再吃了,「雞蛋」又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裡,消費者去籃子裡拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裡,而這個籃子就是kafka
。
雞蛋其實就是「資料流」,系統之間的互動都是通過「資料流」來傳輸的,也稱為報文,也叫「訊息」。
訊息佇列滿了,其實就是籃子滿了,「雞蛋」放不下了,那趕緊多放幾個籃子,其實就是kafka
的擴容。
綜上所述,kafka 的概念就很好理解了,它就是那個「籃子」。
三、使用場景
1.訊息系統
對於一些常規的訊息系統,kafka
是個不錯的選擇。
2.檢測網站活性
kafka
可以作為「網站活性跟蹤」的最佳工具。可以將網頁/使用者操作等資訊傳送到kafka
中。並實時監控,或者離線統計分析等。
3.日誌系統
kafka
的特性決定它非常適合作為「日誌收集中心」;