什麼是 Kafka?

Apache Kafka 是一種分散資料存放區,強化即時擷取與處理串流資料的能力。串流資料是由數千個資料來源持續產生的資料,通常會同時傳入資料記錄。串流平台需要處理持續湧入的資料,並且依序逐步處理資料。

Kafka 為其使用者提供三個主要功能:

  • 發佈並訂閱記錄串流
  • 按照記錄產生的順序有效地儲存記錄串流
  • 即時處理記錄串流

Kafka 主要用於建置即時串流資料管道和適應資料串流的應用程式。它結合了簡訊、儲存和串流處理功能,以允許儲存和分析歷史和即時資料。 

Kafka 有何作用?

Kafka 用於建置即時串流資料管道和即時串流應用程式。資料管道可靠地處理並將資料從一個系統移動到另一個系統,而串流應用程式則是取用資料串流的應用程式。例如,如果您想要建立一個接收使用者活動資料的資料管道,以追蹤使用者即時使用您網站的方式,則 Kafka 會用於擷取和儲存串流資料,同時為支援資料管道的應用程式提供讀取。Kafka 也經常用作訊息代理程式解決方案,即處理和調解兩個應用程式之間通訊的平台。

Kafka 如何運作?

Kafka 結合了兩種簡訊模型,即佇列和發佈-訂閱模型,為取用者提供每種模型的主要優點。佇列允許將資料處理分佈到許多取用者執行個體,使其具有高度擴展性。但是,傳統的佇列並非多訂閱者。發佈-訂閱方法採用多訂閱者,但由於每個訊息都傳送給每個訂閱者,因此無法用於在多個工作者程序中分佈工作。Kafka 使用分割的日誌模型將這兩個解決方案拼接在一起。日誌是一個已排序的記錄序列,並且這些日誌分成對應於不同訂閱者的區段或分割區。這意味著同一主題可以有多個訂閱者,並且每個訂閱者都被指派一個分割區以提供更高的擴展性。最後,Kafka 的模型提供了可重播性,這允許從資料串流讀取的多個獨立應用程式以自己的速率獨立工作。

佇列

發佈-訂閱

Kafka 的方法有哪些優點?

可擴展性

Kafka 的分割日誌模型允許將資料分佈到多個伺服器上,使其可擴展超出適合單一伺服器的內容。 

快速

Kafka 將資料串流解耦,因此延遲非常低,可快速執行。 

耐久

分割區分佈並複寫在許多伺服器之間,並且資料全部寫入磁碟。這有助於防止伺服器故障,使資料非常容錯和耐久。 

Kafka 的架構如何整合不同模型?

Kafka 透過將記錄發佈到不同主題來對兩種不同模型進行補救。每個主題都有一個分割的日誌,這是一個結構化的提交日誌,其按順序追蹤所有記錄並即時附加新的記錄。這些分割區分佈在多個伺服器之間並進行複寫,可提供高擴展性、容錯性和平行性。每個取用者都會在主題中指派一個分割區,從而允許多訂閱者,同時保持資料的順序。透過結合這些簡訊模型,Kafka 提供了兩者的有點。Kafka 還透過將所有資料寫入到磁碟上和進行複寫,充當機具擴展性和容錯能力的儲存系統。依預設,Kafka 會將資料儲存在磁碟上,直到空間用完為止,但使用者也可以設定保留限制。Kafka 有四個 API:

  • 生產者 API:用於將記錄串流發佈到 Kafka 主題。
  • 取用者 API:用於訂閱主題並處理其記錄串流。
  • 串流 API:允許應用程式作為串流處理器採取行動,這些處理器接收來自主題的輸入串流並將其轉換為輸出串流,這些輸出串流進入不同的輸出主題。
  • 連接器 API:允許使用者無縫自動化將其他應用程式或資料系統新增到其目前 Kafka 主題中的動作。

Apache Kafka 和 RabbitMQ 之間有什麼區別?

RabbitMQ 是一個使用消息佇列方法的開放原始碼訊息代理程式。佇列分佈在節點叢集中,並可選擇複寫,其中每條訊息僅傳遞給單一取用者。

特性

Apache Kafka

RabbitMQ

架構

Kafka 使用分割日誌模型,它結合了簡訊佇列和發佈訂閱方法。

RabbitMQ 使用簡訊佇列。

可擴展性

Kafka 透過允許在不同的伺服器上分散分割區來提供可擴展性。

增加排入佇列的取用者數量,以擴大競爭取用者之間的處理規模。

訊息保留

以政策為基礎,例如,訊息可能會儲存一天。使用者可以設定此保留時段。

以確認為基礎,這意味著循序會在取用之後刪除。

多個取用者

多個取用者可以訂閱相同的主題,因為 Kafka 允許在特定的時間段中重播相同的訊息。

多個取用者都無法接收相同的訊息,因為訊息會在取用之後移除。

複寫

主題會自動複寫,但使用者可以手動設定不複寫的主題。

不會自動複寫訊息,但使用者可以手動設定要複寫的訊息。

訊息排序

由於採用分割的日誌架構,每個取用者都會按順序接收資訊。

訊息會按照其到達佇列的順序傳送給取用者。如果有競爭的取用者,每個取用者都會處理該訊息的一個子集。

通訊協定

Kafka 透過 TCP 使用二進位通訊協定。

透過外掛程式支援的進階簡訊佇列通訊協定 (AMQP):MQTT、STOMP。

閱讀有關 Kafka 和 RabbitMQ 之間區別的更多內容»

AWS 如何支援您的 Kafka 要求?

此處閱讀有關如何在 AWS 上手動部署 Kafka 的更多資訊。

AWS 還提供 Amazon MSK,這是 Apache Kafka 最相容、可用且最安全的全受管服務,可讓客戶填入資料湖資料、將變更串流至資料庫和從資料庫串流變更,以及為機器學習和分析應用程式提供支援。藉助 Amazon MSK,客戶可以減少管理基礎設施的時間,而將更多時間用於建置應用程式。 進一步了解 Amazon MSK

AWS 上的後續步驟

註冊免費帳戶

立即存取 AWS 免費方案。

註冊 
開始在主控台進行建置

開始在 AWS 管理主控台進行建置。

登入