2.6.1 Apache Kafka簡介
2.6.1.1簡介
每個組織都以非常簡單的方式從資料的角度出發。 組織的資料生態系統始於一個來源系統和一個目標。 來源系統會將資料傳送至目標系統,僅此而已。 很簡單,對吧?
但願事情會如此簡單。 組織的規模迅速超過簡單的設定,來源系統和目標系統的數量也迅速增加。 所有這些不同的來源和目的地都需要彼此交換資料,事情很快就會變得非常複雜。
例如,如果組織有4個來源和6個目的地,且所有這些應用程式都需要彼此溝通,您就需要建立24個整合……這些整合都有各自的困難:
- 通訊協定:如何傳輸資料(TCP、HTTP、REST、FTP…)
- 資料格式:資料如何剖析(二進位、CSV、JSON、Parquet、…)
- 資料結構描述和演化:什麼是資料模型,它將如何演化?
此外,每次將來源系統連線到目的地系統時,這些系統從該連線的負載都會增加。
那麼,您要如何解決這個問題? 這就是Apache Kafka發揮作用的地方。 Apache Kafka提供共用、高輸送量的分散式傳訊系統,讓組織能夠將資料串流和系統分離。 Source系統將傳送其資料至Apache Kafka,而目的地系統將使用Apache Kafka的資料。
想一想企業必須管理的所有資料來源體驗型別:
- 網站事件
- 行動應用程式事件
- POS事件
- CRM 資料
- 呼叫中心資料
- 交易歷史記錄
- …
想想企業在其生態系統中使用的所有型別的目的地,這些目的地都可能需要來自這些來源系統的資料:
- CRM
- 資料湖
- 電子郵件系統
- 稽核
- analytics
- …
Apache Kafka是由LinkedIn所建立,現在是主要由Confluent維護的開放原始碼專案。
Apache Kafka提供具備容錯能力的分散式復原架構。 它可以橫向擴展至100多個經紀人,每秒可擴充至數百萬封訊息。 提供低於10毫秒的高效能,最適合即時使用案例。
幾個使用案例範例:
- 傳訊系統
- 活動追蹤
- 從許多不同位置收集量度
- 應用程式記錄收集
- 串流處理(使用Kafka Streams API或Spark)
- 分離系統相依性
- 與Spark、Flink、Storm、Hadoop和其他許多大資料技術整合。
例如:
- Netflix使用Kafka在觀看電視節目時即時套用建議
- Uber使用Kafka即時收集使用者、計程車和旅行資料,以即時計算及預測需求並計算突增價格
- LinkedIn使用Kafka來防止垃圾郵件、收集使用者互動,以便即時提供更好的連線建議
對於所有這些使用案例,Kafka僅用作運輸機制。 Kafka非常擅長在應用程式之間行動資料。
2.6.1.2 Kafka術語
訊息
訊息是由系統傳送到Kafka的通訊。 訊息包含裝載,而裝載包含資料元素。 例如,網站傳送至Adobe Experience Platform的體驗事件會視為訊息。
主題、分割區、位移
主題是特定的資料流,類似於資料庫中的表格。 您可以擁有任意多個主題,主題會以其名稱來識別。 主題會分割成多個分割區。 每個資料分割都已排序,而且資料分割內的每個訊息都會取得遞增識別碼,稱為 offset。 訊息儲存在分割區上的主題中,並使用位移參照。 訊息只會保留有限的時間(預設為1週)。 一旦將訊息寫入分割區,就無法再變更訊息。
經紀人
代理人類似於伺服器。 Kafka叢集由多個代理(伺服器)組成。 每個代理人都以ID識別,並包含特定主題分割區。
復寫
Kafka是分散式系統。 分散式系統的重要事項之一就是資料會安全地儲存,因此需要複製。 畢竟,當一個代理人(伺服器)停止運作時,另一個代理人(伺服器)應該仍然能夠存取最初儲存在停止運作的代理人上的訊息。 復寫將會跨多個代理程式建立訊息復本,以確保不會遺失任何資料。
製作者
資料如何傳送至Kafka? 這是製作人的角色。 製作者會連線至來源系統,並從來源系統取得資料,然後將資料寫入主題至分割區。 根據您的Kafka叢集的設定,製作者會自動知道要寫入哪個中介和分割區。 在有多個中介和復寫策略的分散式系統中,製作者會隨機跨多個中介儲存資料,這表示會自動執行負載平衡。
訊息鍵
製作者可以選擇連同訊息一起傳送金鑰。 金鑰可以是任何字串、數字等。 如果未提供金鑰,訊息將會隨機傳送給代理人。 如果傳送索引鍵,則該索引鍵的所有訊息將一律傳送到相同的分割區。 訊息金鑰是根據特定欄位來排序訊息。
消費者
消費者會從Apache Kafka主題讀取資料,然後將該資料與目的地系統共用。 消費者知道要從哪個代理人讀取。 消費者在每個分割區中依序讀取資料。 消費者會讀取消費者群組中的資料。
Zookeeper
ZooKeeper本質上是提供階層式機碼值存放區的分散式系統服務,用於提供大型分散式系統的分散式組態服務、同步化服務及命名登入。 Zookeeper必須在您使用Apache Kafka之前執行,Zookeeper是Kafka的某種儀式大師,在Kafka產生和使用事件時管理後端的分散式服務。
您已完成此練習。
後續步驟
返回將資料從Apache Kafka串流到Adobe Experience Platform
返回所有模組