Like Share Discussion Bookmark Smile

J.J. Huang   2020-11-17   Kafka   瀏覽次數:

Kafka - 第一章 | Apache Kafka 概述

在大數據中,使用了大量的數據。關於數據,我們有兩個主要挑戰。第一個挑戰是如何收集大量的數據,第二個挑戰是分析收集的數據。為了克服這些挑戰,你必須需要一個消息系統。

Kafka專為分佈式高吞吐量系統而設計。Kafka往往工作得很好,作為一個更傳統的消息代理的替代品。與其他消息傳遞系統相比,Kafka具有更好的吞吐量,內置分區,複製和固有的容錯能力,這使得它非常適合大規模消息處理應用程序。

什麼是 Kafka ?

kafka是消息中間件的一種,在開始學習之前,先簡單的解釋一下什麼是消息中間件,只是粗略的講解,目前kafka已經可以做更多的事情。

舉個例子:
目前有生產者、消費者,而生產者生產雞蛋,消費者消費雞蛋。

生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統當機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。

再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費者就吃不消了(消息堵塞,最終導致系統超時),消費者拒絕再吃了,雞蛋又丟失了。

註:以上這種狀況就是在沒有消息中間件的一種架構上。

這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裡,消費者去籃子裡拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裡,而這個籃子就是kafka

雞蛋其實就是「數據流」,系統之間的交互都是通過「數據流」來傳輸的(就是tcphttps什麼的),也稱為報文,也叫「消息」。

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

其實kafka是乾什麼的,它就是那個「籃子」。

kafka 好處

  • 可靠性:Kafka是分佈式,分區,複製和容錯的。
  • 可擴展性:Kafka消息傳遞系統輕鬆縮放,無需停機。
  • 耐用性:Kafka使用分佈式提交日誌,這意味著消息會盡可能快地保留在磁盤上,因此它是持久的。
  • 性能:Kafka對於發布和訂閱消息都具有高吞吐量。即使存儲了許多TB的消息,它也保持穩定的性能。

Kafka非常快,並保證零停機和零數據丟失。

kafka 名詞解釋

關於kafka的名詞,比如topicproducerconsumerbroker,簡單說明一下:

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

大家一定要學會抽象的去思考,上面只是屬於業務的角度,如果從技術角度,topic標籤實際就是隊列,生產者把所有雞蛋(消息)都放到對應的隊列裡了,消費者到指定的隊列裡取。

Kafka 用例

Kafka可以在許多用例中使用。其列出部分如下:

  • 指標:Kafka通常用於操作監控數據。這涉及聚合來自分佈式應用程序的統計信息,以產生操作數據的集中饋送。
  • 日誌聚合解決方案:Kafka可用於跨組織從多個服務收集日誌,並使它們以標準格式提供給多個服務器。
  • 流處理:流行的框架(如StormSpark Streaming)從主題中讀取數據,對其進行處理,並將處理後的數據寫入新主題,供用戶和應用程序使用。

註:以上參考了
w3cschool Apache Kafka 概述
OrcHome 半兽人 - kafka中文教程