什麼是 Apache Kafka?

Apache Kafka 是一個熱門的事件串流平台,主要用於收集、處理和儲存串流事件資料或是沒有明確開始或結束的資料。Kafka 有助於建構新一代的分散式應用程式,而且應用程式能夠彈性擴充,每分鐘可處理多達數十億個串流事件。

在事件串流系統如 Apache Kafka 和 Google Cloud Pub/Sub 推出之前,資料處理通常是透過週期性的批次工作進行,也就是會先儲存原始資料,之後再每隔一段時間處理。例如,電信公司可能會等到一天、一週或一個月結束時,才分析數百萬筆的通話記錄並計算總費用。

批次處理有其侷限性,其中一個就是無法即時處理。如今,有越來越多的機構希望能即時分析資料,以利及時做出業務決策,並在發生需要關注的事件時馬上採取行動。例如,上面提到的電信公司可以透過即時的費用通知服務,增強整體客戶體驗。

事件串流這時就能派上用場。事件串流會即時處理持續湧進的事件串流,從中擷取資料的時間值並建立推送式應用程式,只要發生需要關注的事情,推送式應用程式就會採取行動。事件串流的例子包括:連續分析顧客端網頁應用程式所產生的記錄檔、監控並回應顧客瀏覽電子商務網站時的行為、透過分析社群網路產生的點擊流資料變化持續掌握顧客喜好,或是收集並回應由物聯網 (IoT) 裝置產生的遙測資料。

瞭解 Confluent Cloud 在 Google Cloud 上提供的全代管整合式 Apache Kafka 產品。

Apache Kafka 總覽

Kafka 會取用串流資料並準確記錄發生的情況和時間,這項記錄稱為不可變的修訂版本記錄。這是不可變的內容,因為只能附加而不能更改。在這個系統中,您可以訂閱記錄 (存取資料),也可以從任意數量的串流即時應用程式和其他系統發布記錄 (新增更多資料)。

例如,您可以使用 Kafka 將網站上所有交易資料串流饋送至應用程式,這個應用程式會即時追蹤產品銷售,並將其與庫存產品數量進行比較,如此一來,就能及時補充庫存。

Kafka 的好處有哪些?

Kafka 是開放原始碼系統

這意味著任何人都可以免費使用其開放原始碼,藉此製作、修改和發布自己的版本,且用途不限。無需支付授權費,也沒有任何其他限制。Kafka 背後還有龐大的開發人員社群攜手改善服務品質,所以 Kafka 能提供廣泛的連接器、外掛程式、監控工具和設定工具,服務的生態系統也會不斷持續擴充。

擴充性與速度

Kafka 不僅可以隨著不斷增長的資料量進行擴充,而且可以即時在整個企業中提供這些資料。身為分散式平台也是 Kafka 的一大優勢,也就是說,它能將處理程序分散在多台實體或虛擬機器之間進行。這有兩個優點:對於某些工作,它可以向外擴充,亦即在需要更多處理能力或儲存空間時能夠增加機器;另外它也兼具可靠性,因為即使發生個別機器故障的情況,平台也依然可以運行無礙。但是,這項 Kafka 功能卻可能很難做到大規模管理。

Kafka 即代管服務

儘管 Kafka 擁有上述所有優勢,但部署這項技術卻深具挑戰性。內部部署 Kafka 叢集很難在實際工作環境中設定、擴充和管理。為 Kafka 建立內部基礎架構時,您需要佈建機器並設定 Kafka。不止於此,您還必須設計分散式機器叢集以確保可用性、確認資料安全地儲存、設定監控功能,並審慎調度資料的資源以支援負載變化。最後,您也必須維護該基礎架構、更換故障機器,並進行例行性的修補和升級。

另外一種做法是在雲端以代管服務形式使用 Kafka,佈建、建構和維護 Kafka 基礎架構的工作,則由第三方廠商負責,您只要建構並執行應用程式。如此一來,無需具備專門的 Kafka 基礎架構管理專業知識,您也能輕鬆部署 Kafka。縮短管理基礎架構的時間,將心力投注在創造業務價值。

Kafka 如何運作?

Kafka 透過五項核心功能實現串流事件處理:

發布

資料來源可將資料事件串流發布或放置到一或多個 Kafka 主題,亦即集合類似資料事件的群組。例如,您可以從 IoT 裝置 (譬如網路路由器) 取用資料串流,然後將其發布到進行預測性維護作業的應用程式中,計算該路由器何時可能發生故障。

取用

應用程式可以訂閱一或多個 Kafka 主題 (從中取用資料),然後處理產生的資料串流。例如,應用程式可以從多個社群媒體串流中取用資料並進行分析,判斷網路上對某個品牌的討論趨勢。

處理

Kafka Streams API 可以充當串流處理器,從一或多個主題取用傳入的資料串流,接著產生資料串流並傳出至一或多個主題。

連結

您也可以建立可重複使用的生成器或取用器連線,將 Kafka 主題連結到現有應用程式。目前有數百種現成的連接器可供使用,包括可連結 Dataproc、BigQuery 等主要服務的連接器。

儲存

Apache Kafka 提供耐用儲存服務。Kafka 可以做為「可靠資料來源」,將資料分散在多個節點,所以無論是在單一資料中心內或橫跨多個可用區,都可實現高可用性部署。