kafka解決的問題

2021-08-10 21:28:47 字數 1693 閱讀 2332

假設你意氣風發,要開發新一代的網際網路應用,以期在網際網路事業中一展巨集圖。借助雲計算,很容易開發出如下原型系統:

web應用:部署在雲伺服器上,為個人電腦或者移動使用者提供的訪問體驗。

sql資料庫:為web應用提供資料持久化以及資料查詢。

本質上,這是乙個資料整合問題。沒有任何乙個系統能夠解決所有的事情,所以業務資料根據不同用途存而放在不同的系統,比如歸檔、分析、搜尋、快取等。資料冗餘本身沒有任何問題,但是不同系統之間像義大利麵條一樣複雜的資料同步卻是挑戰。

這時候就輪到kafka出場了。

kafka可以讓合適的資料以合適的形式出現在合適的地方。kafka的做法是提供訊息佇列,讓生產者單往佇列的末尾新增資料,讓多個消費者從佇列裡面依次讀取資料然後自行處理。之前連線的複雜度是o(n^2),而現在降低到o(n),擴充套件起來方便多了:

以上故事說明了kafka主要用途是資料整合,或者說是流資料整合,以pub/sub形式的訊息匯流排形式提供。但是,kafka不僅僅是一套傳統的訊息匯流排,本質上kafka是分布式的流資料平台,因為以下特性而著名:

提供pub/sub方式的海量訊息處理。

以高容錯的方式儲存海量資料流。

保證資料流的順序。

apache kafka是訊息中介軟體的一種,我發現很多人不知道訊息中介軟體是什麼,在開始學習之前,我這邊就先簡單的解釋一下什麼是訊息中介軟體,只是粗略的講解,目前kafka已經可以做更多的事情。

舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產乙個雞蛋,消費者就消費乙個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費者就吃不消了(訊息堵塞,最終導致系統超時),消費者拒絕再吃了,」雞蛋「又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裡,消費者去籃子裡拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裡,而這個籃子就是」kafka「。

雞蛋其實就是「資料流」,系統之間的互動都是通過「資料流」來傳輸的(就是tcp、http什麼的),也稱為報文,也叫「訊息」。

訊息佇列滿了,其實就是籃子滿了,」雞蛋「 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。

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

老闆有個好訊息要告訴大家,有兩個辦法:

1.到每個座位上挨個兒告訴每個人。什麼?張三去上廁所了?那張三就只能錯過好訊息了!

2.老闆把訊息寫到黑板報上,誰想知道就來看一下,什麼?張三請假了?沒關係,我一周之後才擦掉,總會看見的!什麼張三請假兩周?那就算了,我反正只保留一周,不然其他好訊息沒地方寫了

redis用第一種辦法,kafka用第二種辦法,知道什麼區別了吧

**:

精 Kafka問題與解決

問題 1.網域名稱解析失敗 vim etc hosts 127.0.0.1 kafka 2.模擬kafka掛掉 kil 9 22789 kafka server stop.sh 3.修改broker.id失敗 需要同步修改meta.properties中的id 4.沒有刪除topic 1 命令刪除 ...

解決Kafka重複消費問題

某服務 用了springboot spring kafka 處理kafka訊息時,發現每條訊息處理時間長達60 秒。幾百條訊息處理完後,又重新從第一條開始重複消費。kafka消費者有兩個配置引數 max.poll.interval.ms 兩次poll操作允許的最大時間間隔。單位毫秒。預設值30000...

kafka監聽問題的解決和剖析

首先kafka監聽不得到資料,檢查如下 如果出現監聽不到資料的問題,那麼就試試更改方法一二,如果不可以在去試試方法三,之前出現這個問題也是查過 一般查到都會說 低版本的伺服器接收不到高版本的生產者傳送的訊息 但是淨由測試使用 用1.0.5release 和 2.6.3反覆測試,並沒有任何的問題。如果...