跳至主要內容
版本:5.0

RocketMQ Streams 核心概念

網域模型

StreamBuilder

img_2.png

  • StreamBuilder 的一個實例有 1 到 N 個管線,其中一個管線代表一個資料處理路徑。
  • 一個管線可以包含 1 到 N 個處理節點,稱為 GroupNodes。
  • StreamBuilder 的一個實例還有一個 TopologyBuilder,它可以建構資料處理器。
  • 每個 JobId 對應到 StreamBuilder 的一個實例。

RocketMQStream

img_2.png

  • RocketMQStream 的一個實例有一個 TopologyBuilder,用於建構拓撲。
  • RocketMQStream 的一個實例可以實例化 1 到 N 個工作執行緒
  • 每個執行緒由一個 WorkerThread 實例表示,其中包含一個引擎
  • 引擎包含執行資料處理的所有邏輯,並包含一個消費者實例、一個生產者實例和一個 StateStore 實例。

串流處理實例

串流處理實例表示執行 RocketMQ Streams 的一個處理程序;

  • 串流處理的執行個體包含一個 StreamBuilder、一個 RocketMQStream、一個拓撲,以及一個或多個管線。

StreamBuilder

  • StreamBuilder(jobId) 建立執行個體;
  • <OUT> RStream<OUT> source(topicName, deserializer) 定義來源主題和反序列化方法;

RStream

  • <K> GroupedStream<K, T> keyBy(selectAction) 依特定欄位群組資料;
  • <O> RStream<O> map(mapperAction) 一對一轉換資料;
  • RStream<T> filter(predictor) 過濾資料
  • <VR> RStream<T> flatMap(mapper)一對多轉換資料;
  • <T2> JoinedStream<T, T2> join(rightStream) 執行兩個串流的聯結;
  • sink(topicName, serializer) 將結果輸出到特定主題;

GroupedStream

對具有相同金鑰的資料進行的操作

  • <OUT> GroupedStream<K, Integer> count(selectAction) 計算包含特定欄位的資料條目數。
  • GroupedStream<K, V> min(selectAction) 計算特定欄位的最小值。
  • GroupedStream<K, V> max(selectAction) 計算特定欄位的最大值。
  • GroupedStream<K, ? extends Number> sum(selectAction) 計算特定欄位的總和。
  • GroupedStream<K, V> filter(predictor) 過濾特定欄位。
  • <OUT> GroupedStream<K, OUT> map(valueMapperAction) 執行一對一資料轉換。
  • <OUT> GroupedStream<K, OUT> aggregate(accumulator) 對資料執行聚合運算,並支援二階聚合,例如在視窗觸發前新增資料,並在視窗觸發時計算結果。
  • WindowStream<K, V> window(windowInfo) 為串流定義視窗。
  • GroupedStream<K, V> addGraphNode(name, supplier) 在低階介面中將自訂運算子新增到串流處理拓撲。
  • RStream<V> toRStream() 轉換為 RStream,僅在介面方面進行轉換,不影響資料。
  • sink(topicName, serializer) 以自訂序列化格式將結果寫入主題。

WindowStream

對已分組成視窗的資料進行的操作

  • WindowStream<K, Integer> count() 計算視窗中的資料條目數。
  • WindowStream<K, V> filter(predictor) 過濾視窗中的資料。
  • <OUT> WindowStream<K, OUT> map(mapperAction) 對視窗中的資料執行一對一資料轉換。
  • <OUT> WindowStream<K, OUT> aggregate(aggregateAction) 對視窗中的資料執行多對一資料轉換。
  • <OUT> WindowStream<K, OUT> aggregate(accumulator) 對視窗中的資料執行聚合操作,並支援二階聚合,例如在視窗觸發前新增資料並在視窗觸發時計算結果。
  • void sink(topicName, serializer) 以自訂序列化格式將結果寫入主題。