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產生和使用事件時管理後端的分散式服務。

您已完成此練習。

後續步驟

移至2.6.2安裝並設定您的Kafka叢集

返回將資料從Apache Kafka串流到Adobe Experience Platform

返回所有模組

recommendation-more-help
4bbf020c-24db-4a43-b239-88fab142f02d