訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一番吧!
如同「【Message Queue】 井然有序的排隊機制 - 基本介紹」所介紹的, 我們看看下圖, 左邊的情境, 當客人越來越多時, 後面的客人都必須等待廚師做好餐點才能做其他事情, 而我們再來看看右邊的情境, 每個客人只要將菜單交給櫃台之後就能去做其他事情了, 而廚師們依據櫃台的菜單做菜, 直到餐點完成後客人依序取餐, 這樣的方式讓整個過程更有效率的運作, 客人寫菜單後自由活動, 廚師依單作業, 各自角色獨立耦合, 減少等待的時間耗費, 中間櫃台負責收跟送。
而Kafka就是扮演著櫃台的角色, 擔任客人與廚師之間的橋樑, 讓彼此之間能夠更有效率的作業。
核心重點來了, 我們深入使用kafka之前先來鳥瞰一下整體的架構設計以及各個組件扮演的角色, 往後才能夠更快的理解細部功能的設計與用途。
這兩個角色是Message Queue架構之下的基本角色, 總是要有人消費才會有生產, 生產者(producer)專注於生產訊息並丟往kafka, 而消費者(consumer)則負責消化這些訊息並根據訊息的內容處理任務。
通知兒子去買菜就是一個「事件」的起源, 買什麼菜則是「訊息」的內容,而中間的訊息傳遞橋樑可以是電話、留言紙條、Line訊息…, 有沒有覺得Message Queue的概念套到生活上就通了呢?
主題(Topics)的部份我們可以理解為「新聞」, 分區(Partition)的部份則可以理解為「各個地區」, 透過主題(Topics)與分區(Partition)讓我們將資料分流到不同節點, 進而提高吞吐量(【資訊軟體知識】認識延遲、吞吐量、頻寬的差別)。
一個主題可以有多個分區, 每個分區依序紀錄生產者送過來的訊息, 關於分區的派送策略我們後續會另外撰寫一篇來進行詳細的介紹, 這邊我們僅需要知道主題(Topics)與分區(Partition)的基本概念即可。
單台Kafka為一個代理器(Broker), 而群集(Cluster)裡面可以有多個Broker, 負責分配 partitions與監控Broker, 進而實現負載平衡、資料備份、故障轉移…等功能。
這個篇章我們先帶到Kafka的基本元件概念即可, 否則一次塞太多知識也難以消化, 我們對於整體架構有一定的基本認識之後, 接下來將針對各個元件內容細部的拆解與說明。