2024-05-17|閱讀時間 ‧ 約 24 分鐘

【🔒 Message Queue - Kafka】串流時代的超入門簡介

raw-image


訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一番吧!

關鍵功能有哪些?

  • 寫入及訂閱事件流。
  • 可靠的儲存事件流。
  • 處理即時或過去的事件流。
  • 分散式、可擴展、容錯、安全。

解決了什麼問題?

如同「【Message Queue】 井然有序的排隊機制 - 基本介紹」所介紹的, 我們看看下圖, 左邊的情境, 當客人越來越多時, 後面的客人都必須等待廚師做好餐點才能做其他事情, 而我們再來看看右邊的情境, 每個客人只要將菜單交給櫃台之後就能去做其他事情了, 而廚師們依據櫃台的菜單做菜, 直到餐點完成後客人依序取餐, 這樣的方式讓整個過程更有效率的運作, 客人寫菜單後自由活動, 廚師依單作業, 各自角色獨立耦合, 減少等待的時間耗費, 中間櫃台負責收跟送。


而Kafka就是扮演著櫃台的角色, 擔任客人與廚師之間的橋樑, 讓彼此之間能夠更有效率的作業。

基礎架構與角色


核心重點來了, 我們深入使用kafka之前先來鳥瞰一下整體的架構設計以及各個組件扮演的角色, 往後才能夠更快的理解細部功能的設計與用途。

生產者(Producer)與消費者(Consumer)

這兩個角色是Message Queue架構之下的基本角色, 總是要有人消費才會有生產, 生產者(producer)專注於生產訊息並丟往kafka, 而消費者(consumer)則負責消化這些訊息並根據訊息的內容處理任務。

事件(Event)與訊息(Message)


通知兒子去買菜就是一個「事件」的起源, 買什麼菜則是「訊息」的內容,而中間的訊息傳遞橋樑可以是電話、留言紙條、Line訊息…, 有沒有覺得Message Queue的概念套到生活上就通了呢?

主題(Topics)與分區(Partition)


主題(Topics)的部份我們可以理解為「新聞」, 分區(Partition)的部份則可以理解為「各個地區」, 透過主題(Topics)與分區(Partition)讓我們將資料分流到不同節點, 進而提高吞吐量(【資訊軟體知識】認識延遲、吞吐量、頻寬的差別)。

一個主題可以有多個分區, 每個分區依序紀錄生產者送過來的訊息, 關於分區的派送策略我們後續會另外撰寫一篇來進行詳細的介紹, 這邊我們僅需要知道主題(Topics)與分區(Partition)的基本概念即可。

代理器(Broker)與群集(Cluster)


單台Kafka為一個代理器(Broker), 而群集(Cluster)裡面可以有多個Broker, 負責分配 partitions與監控Broker, 進而實現負載平衡、資料備份、故障轉移…等功能。

結語

這個篇章我們先帶到Kafka的基本元件概念即可, 否則一次塞太多知識也難以消化, 我們對於整體架構有一定的基本認識之後, 接下來將針對各個元件內容細部的拆解與說明。

分享至
成為作者繼續創作的動力吧!
嗨! 大家好,我是阿Han,歡迎來到「🔒 阿Han的軟體心法實戰營」,這裡將會手把手帶你系統化的學習軟體開發技能,並透過實戰來加深學習成效,邊學邊做能夠讓您在職涯上一帆風順,成為獨當一面的技術專家。 這裡主要會以Python程式語言進行示範。
© 2024 vocus All rights reserved.