7 Streamsアプリケーションのスケーリング

1つのストリーミング・サービスを複数のノードで実行するようにスケーリングして、大規模なOracle NoSQL Databaseストアからの大量のストリーム・イベントを処理できます。ストリーミング・サービスでは、複数のサブスクライバを使用してOracle NoSQL Databaseストアからのデータをストリームできます。

ストリーム処理アプリケーションがOracle NoSQL Databaseストアのトポロジを認識する必要はなく、独立したサブスクライバを必要に応じて単に追加または削除できます。ストリーム処理アプリケーションで指定する必要があるのは、サブスクライバの数とサブスクライバIDのみです。

次の図は、2つのクライアントを使用してOracle NoSQL Databaseストアの6つのシャードからのデータをストリームするために、ストリーム・アプリケーションをどのようにスケーリングできるかを示しています。

複数のサブスクライバのダイアグラム

Oracle NoSQL Databaseストアは、サブスクライバ間でストリームを均等に分散しようとします。図に示されているように、6つのシャードと2つのサブスクライバがあります。この例では、それぞれのサブスクライバが3つのシャードからストリームを受け取ります。サブスクライバではストリームを受け取るシャードを選択しません。システムによって自動的に決定され、その決定はサブスクライバに対して透過的です。シャードが(この例のように)サブスクライバより多い場合、一部のサブスクライバは複数のシャードからストリームを受け取ることがあります。

ノート:

  • スケーラブルなサブスクライバの最大数がシャードの数を超えることはできません。たとえば、Oracle NoSQL Databaseに6つのシャードがある場合、6つを超えるクライアントにサブスクライバをスケーリングすることはできません。

  • 新たに追加されたリソースを有効に活用するためにストリーム処理アプリケーションを異なるノードで実行することによってスケーリングするOracle NoSQL Database

スケーラブルなサブスクライバを同じノード上の別個のJVM内に作成して実行することもできますが、このような構成には、スケーラブルなサブスクライバを使用せずに1つのサブスクライバを実行する構成を超える利点はありません。この例では、異なるJVM内(ただし同じノード内)で2つのスケーラブルなサブスクライバを実行して、それぞれ3つのシャードにわたってストリームしても、Oracle NoSQL Databaseストア全体(6つのシャード)をサブスクライブする1つのサブスクライバを同じノードで実行する場合よりも大きいメリットはありません。