RocketMQ Streams 核心概念
網域模型
StreamBuilder
- StreamBuilder 的一個實例有 1 到 N 個管線,其中一個管線代表一個資料處理路徑。
- 一個管線可以包含 1 到 N 個處理節點,稱為 GroupNodes。
- StreamBuilder 的一個實例還有一個 TopologyBuilder,它可以建構資料處理器。
- 每個 JobId 對應到 StreamBuilder 的一個實例。
RocketMQStream
- 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)
以自訂序列化格式將結果寫入主題。