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

RocketMQ Streams 概要

RocketMQ Streamsは、RocketMQをベースとした軽量なストリームコンピューティングエンジンです。複雑なストリームコンピューティングサーバーをデプロイする必要なく、SDK依存として適用できるため、リソース効率が良く、拡張が容易で、豊富なストリームコンピューティングオペレーターを備えています。

アーキテクチャ

总体架构

データはRocketMQ-streamsによってRocketMQから消費され、処理され、最終的にRocketMQに書き戻されます。

总体架构

データはRocketMQ Consumerによって消費され、オペレーターによって処理される処理トポロジに入ります。ストリーム処理タスクにkeyByオペレーターが含まれる場合、データはキーによってグループ化され、シャッフルトピックに書き込まれる必要があります。後続のオペレーターはシャッフルトピックから消費します。countなどのステートフルオペレーターがある場合、計算には状態トピックへの読み書きが必要です。計算が完了すると、結果はRocketMQに書き戻されます。

コンシューマモデル

img_2.png

計算インスタンスは実際にはRocket-streams SDKのクライアントに依存します。したがって、計算インスタンスは、RocketMQのリバランス割り当てに依存してMQを消費します。計算インスタンスの総数は、消費するMQの総数を超えることはできません。そうしないと、一部の計算インスタンスは待機状態になり、データを消費できなくなります。

1つの計算インスタンスは複数のMQを消費でき、1つのインスタンス内には1つの計算トポロジーグラフのみが存在します。

状態

img_3.png

countなどのステートフルオペレーターの場合、合計する前に最初にグループ化する必要があります。グループ化オペレーターkeyByは、グループ化キーに基づいてデータをRocketMQに再書き込みし、同じキーを持つデータが同じパーティションに書き込まれるようにします(このプロセスはシャッフルと呼ばれます)。これにより、同じキーを持つデータが同じコンシューマーによって消費されることが保証されます。状態はRocksDBによってローカルで高速化され、RocketMQによってリモートで永続化されます。

拡張/縮小容量

img.png

計算インスタンスが3から2に削減された場合、RocketMQクラスター消費モードでのリバランス機能の助けを借りて、消費されたMQは計算インスタンス間で再割り当てされます。Instance1によって消費されたMQ2とMQ3は、Instance2とInstance3に割り当てられ、これらの2つのMQの状態データもInstance2とInstance3に移行する必要があります。これは、状態データが元のデータパーティションMQに従って保存されることも意味します。拡張はちょうど逆のプロセスです。