Kafka 概述


kafka 簡介

kafka 是一個為事件流而生的分布式消息系統,廣泛應用於網頁用戶記錄跟蹤,IOT 設備,日志采集,系統監控等場景。

kafka 是用於構建實時數據管道和流應用程序。具有橫向擴展,容錯,wicked fast(變態快)等優點,並已在成千上萬家公司運行。

例子

舉個例子,大部分現代人都刷過抖音、b 站、淘寶,都知道這些應用 app 有個特點就是推薦算法,你瀏覽的越多,它們越知道你對什么感興趣。推薦算法如果離開了用戶行為數據,也就是用戶的瀏覽記錄,那么就像是巧婦難為無米之炊,需要有數據的支撐才能讓推薦算法發揮出它的效果。

那么,有什么實現方式呢,無非就是以下幾種,用戶點擊一下,算法接到一個請求,進行分析,然后輸出相關推薦。

這種方式是不可能的,為什么呢,一是一個點擊一個點擊的數據量太少,除非做下存儲,然后隔一段事件批量拉取做分析,二是對算法系統壓力太大,萬一用戶請求太多了,容易打爆算法系統。還有一種就是接入消息中間件,就像 kafka,用戶點擊一下,生產者(這里可以是 app 或者相應查詢內容的后端服務)發送一個事件到 kafka 服務器(專業術語是 broker),然后就不管了,這時候算法系統(消費者)拉取數據,進行實時或者離線分析,就算你高峰期用戶請求再多,有 broker 在,最多就是消息擠壓,我慢慢消費就行了,總有一天消費得完,分析完再反哺用戶,然后用戶再點擊,再分析,再反哺,造成一個循環,這個循環進行的多了,用戶的興趣愛好就暴露的越明顯,這也就是越刷越停不下來的原因。(大家要少刷啊!多讀書!少看抖音)。

可能大家還有個疑惑,既然你請求多了會打爆算法系統,那么為什么不會打爆 broker 呢,這就設計到 kafka 的橫向擴容特性了,縱使你數據再多,我加機器,加分區解決。

還是例子

再舉個例子,是從kafka 中文教程看到的,很生動形象(做下推薦,這個是為大佬翻譯了 kafka 官方文檔,並且一直在維護,nb!yyds!)。
生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鍾生產100個雞蛋,消費者1秒鍾只能吃50個雞蛋,那要不了一會,消費者就吃不消了(消息堵塞,最終導致系統超時),消費者拒絕再吃了,”雞蛋“又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子里,消費者去籃子里拿雞蛋,這樣雞蛋就不會丟失了,都在籃子里,而這個籃子就是”kafka“。

雞蛋其實就是“數據流”,系統之間的交互都是通過“數據流”來傳輸的(就是tcp、https什么的),也稱為報文,也叫“消息”。

消息隊列滿了,其實就是籃子滿了,”雞蛋“ 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。

各位現在知道kafka是干什么的了吧,它就是那個"籃子"。

名詞解釋

后面大家會看到一些關於kafka的名詞,比如topic、producer、consumer、broker,我這邊來簡單說明一下。

  • producer:生產者,就是它來生產“雞蛋”的。

  • consumer:消費者,生出的“雞蛋”它來消費。

  • topic:你把它理解為標簽,生產者每生產出來一個雞蛋就貼上一個標簽(topic),消費者可不是誰生產的“雞蛋”都吃的,這樣不同的生產者生產出來的“雞蛋”,消費者就可以選擇性的“吃”了。

  • broker:就是籃子了。

系列文章

kafka 生產者
kafka 消費者


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM