Kafka簡介


在巨量資料中,使用了大量的資料。 關於巨量資料,主要有兩個主要挑戰。第一個挑戰是如何收集大量資料,第二個挑戰是分析收集的資料。 為了克服這些挑戰,需要使用訊息傳遞系統。

Kafka專為分散式高吞吐量系統而設計。 Kafka傾向於非常好地取代傳統的資訊中間服務者。 與其他訊息傳遞系統相比,Kafka具有更好的吞吐量,內建分割區,複製和固有容錯功能,因此非常適合大型訊息處理應用程式。

什麼是訊息系統?

訊息系統負責將資料從一個應用程式傳輸到另一個應用程式,因此應用程式可以專注於資料,但不必擔心如何共用資料。 分散式訊息傳遞基於可靠訊息佇列的概念。 訊息在用戶端應用程式和訊息傳遞系統之間非同步排隊。 有兩種型別的訊息傳遞模式可用 - 一種是對等的,另一種是發布 - 訂閱(pub-sub)訊息傳遞系統。 大多數訊息傳遞模式遵循pub-sub

對等訊息系統

在對等系統中,訊息被儲存在一個佇列中。 一個或多個消費者可以消費佇列中的訊息,但是特定的訊息只能由最多一個消費者消費。 一旦消費者在佇列中讀取訊息,訊息就從該佇列中消失。 這個系統的典型例子是一個訂單處理系統,其中每個訂單將由一個訂單處理器處理,但是多訂單處理器也可以同時工作。 下圖描述了結構。

發布-訂閱訊息系統

在發布-訂閱系統中,訊息被儲存在一個主題中。 與對等系統不同,消費者可以訂閱一個或多個主題並使用該主題中的所有訊息。 在發布-訂閱系統中,訊息生產者稱為發布者,訊息消費者稱為訂閱者。 一個真實的例子是Dish TV,它發布體育,電影,音樂等不同的頻道,任何人都可以訂閱他們自己的一套頻道,並在他們的訂閱頻道可用時獲得內容。

什麼是Kafka?

Apache Kafka是一個分散式的發布 - 訂閱訊息傳遞系統和一個強大的佇列,可以處理大量的資料,並使您能夠將訊息從一個端點傳遞到另一個端點。 Kafka適合離線和線上訊息消費。 Kafka訊息被儲存在磁碟上並在叢集內複製以防止資料丟失。 Kafka建立在ZooKeeper同步服務之上。 它與Apache Storm和Spark完美整合,用於實時流資料分析。

優點

以下是使用Kafka的一些好處(優點) -

  • 可靠性 - 卡夫卡是分散式,分割區,複製和容錯。
  • 可延伸性 - Kafka訊息系統無需停機即可輕鬆擴充套件。
  • 耐用性 - Kafka使用分散式提交紀錄檔,這意味著訊息盡可能快地保留在磁碟上,因此它是持久的。
  • 效能 - Kafka對於發布和訂閱訊息都有很高的吞吐量。 它保持穩定的效能,即使儲存了許多TB資料量(級)的訊息。

Kafka速度非常快,可確保零停機時間和零資料丟失。

用例

Kafka可用於許多用例。 其中一些列在下面 -

  • 指標 - Kafka通常用於運營監控資料。 這涉及從分散式應用程式彙總統計資料以生成運算元據的集中式提要。
  • 紀錄檔聚合解決方案 - Kafka可以在整個組織中使用,從多個服務中收集紀錄檔,並以標準格式向多個消費者提供。
  • 流處理 - 流行的框架(如Storm和Spark Streaming)可以從主題讀取資料,對其進行處理,並將處理後的資料寫入新主題,以供使用者和應用程式使用。 Kafka的強耐久性在流加工方面也非常有用。

Kafka是處理所有實時資料饋送的統一平台。 Kafka支援低延遲訊息傳送並在出現機器故障時保證容錯。 它有能力處理大量不同的消費者。 Kafka速度非常快,每秒執行200萬次寫入。 Kafka將所有資料保留在磁碟上,這意味著所有寫入都會進入作業系統(RAM)的頁面快取。 這使得從頁面快取向網路通訊端傳輸資料非常高效。