本文件所描述的內容屬於神策分析的高級使用功能,涉及較多技術細節,適用於對相關功能有經驗的用戶參考。如果對文件內容有疑惑,請諮詢您的數據諮詢顧問獲取一對一的協助。

神策分析設計為開放的架構,讓用戶可以訂閱即時數據來滿足更多使用場景。伺服器端接到一條 SDK 傳來的數據後,會對數據做一些預處理並將數據寫入到消息佇列 Kafka 供下游各類計算模組使用。本文將介紹訂閱 Kafka 數據的方法。

一些要求

訂閱數據需要滿足以下要求:

  1. 啟動訂閱的機器需與部署神策分析的機器在同一個內網,且必須可以解析神策分析伺服器的 host;
  2. 請選用相容的 Kafka 用戶端版本,高版本伺服器端相容低版本用戶端,反之則可能存在相容性問題。神策 Kafka 伺服器端版本一部分早期用戶為 0.8.2.x,後期新用戶為 0.10.x,詳細情況可在伺服器上查看;
  3. 僅私有部署版支援透過 Kafka 訂閱數據;
  4. 如果在自己的機器上訂閱數據,需要先在自己機器上 hosts 中配上神策的伺服器,訂閱的時候 zookeeper 填寫所有機器的 hostname,例如:hostname1:2181,hostname2:2181,hostname3:2181;

訂閱參數

參數名稱參數值
topicevent_topic
partition單機 3 个/叢集 10 个
zookeeperhostname1:2181,hostname2:2181,hostname3:2181
brokerhostname1:9092,hostname2:9092,hostname3:9092

注:在神策高版本數據流作為元件被獨立出來,對事件和用戶數據的 topic 進行了拆分,如果需要使用此功能,需和神策技術支援確認具體需要訂閱的 topic 有哪些。

訂閱數據

訂閱有多種方式,可以選擇一種適合使用場景的方式。

下面給出兩種 Shell 方式啟動訂閱的示範,使用 Shell 方式可以透過重定向標準輸出將數據寫入文件後處理或直接用管道作為其他程序的輸入,可以對接各種編程語言實現的處理程序。當然也可以使用原生 API 實作訂閱,參數與 Shell 方式的一樣,這裡不再介紹。

使用 Kafka Console Consumer

可以使用 Kafka 自帶的 Kafka Console Consumer 透過命令行方式訂閱,例如從最新數據開始訂閱:

bin/kafka-console-consumer.sh --zookeeper hostname:2181 --topic event_topic

# 若 SP 大於 1.18 (上述指令提示沒有 zookeeper 參數) 可使用下面的命令
bin/kafka-console-consumer.sh --bootstrap-server <bootstrap-server>:9092 --topic event_topic
BASH

可以將 stdout 輸出到檔案或作為其他數據處理程序的輸入數據。

Kafka 訂閱樣例

請參考下面的 github 連結中的樣例實作

Kafka 訂閱樣例 github 連結

數據格式

訂閱的數據的格式與數據格式基本一致。