メインコンテンツにスキップ
バージョン: 5.0

RocketMQ Streams コアコンセプト

ドメインモデル

StreamBuilder

img_2.png

  • StreamBuilder のインスタンスは 1 つから N 個のパイプラインを持ち、パイプラインはデータ処理パスを表します。
  • パイプラインには、GroupNode と呼ばれる 1 つから N 個の処理ノードを含めることができます。
  • StreamBuilder のインスタンスには、データプロセッサを構築できる TopologyBuilder もあります。
  • 各 JobId は StreamBuilder の 1 つのインスタンスに対応します。

RocketMQStream

img_2.png

  • RocketMQStream のインスタンスは、トポロジーを構築するための TopologyBuilder を持っています。
  • RocketMQStream のインスタンスは、1 つから N 個のワーカースレッドをインスタンス化できます。
  • WorkerThread インスタンスで表される各スレッドには、エンジンが含まれています。
  • エンジンには、データ処理を実行するためのすべてのロジックが含まれており、コンシューマーインスタンス、プロデューサーインスタンス、および StateStore インスタンスが含まれています。

ストリーム処理インスタンス

ストリーム処理インスタンスは、RocketMQ Streams を実行しているプロセスを表します。

  • ストリーム処理のインスタンスには、1 つの StreamBuilder、1 つの RocketMQStream、1 つのトポロジー、および 1 つ以上のパイプラインが含まれています。

StreamBuilder

  • StreamBuilder(jobId) インスタンスを構築します。
  • <OUT> RStream<OUT> source(topicName, deserializer) ソース トピックとデシリアライズ方法を定義します。

RStream

  • <K> GroupedStream<K, T> keyBy(selectAction) 特定のフィールドでデータをグループ化します。
  • <O> RStream<O> map(mapperAction) データを 1 対 1 で変換します。
  • RStream<T> filter(predictor) データをフィルタリングします。
  • <VR> RStream<T> flatMap(mapper) データを 1 対多で変換します。
  • <T2> JoinedStream<T, T2> join(rightStream) 2 つのストリームの結合を実行します。
  • 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) 1 対 1 のデータ変換を実行します。
  • <OUT> GroupedStream<K, OUT> aggregate(accumulator) データに対して集計操作を実行し、ウィンドウがトリガーされる前にデータを追加し、ウィンドウがトリガーされたときに結果を計算するなど、2 次集計をサポートします。
  • 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) ウィンドウ内のデータに対して 1 対 1 のデータ変換を実行します。
  • <OUT> WindowStream<K, OUT> aggregate(aggregateAction) ウィンドウ内のデータに対して多対 1 のデータ変換を実行します。
  • <OUT> WindowStream<K, OUT> aggregate(accumulator) ウィンドウ内のデータに対して集計操作を実行し、ウィンドウがトリガーされる前にデータを追加し、ウィンドウがトリガーされたときに結果を計算するなど、2 次集計をサポートします。
  • void sink(topicName, serializer) 結果をカスタムシリアライズ形式でトピックに書き込みます。