ストリーミングの概要

Oracle Cloud Infrastructure Streamingサービスは、リアルタイムで大量のデータ・ストリームを収集および消費するための、完全に管理されたスケーラブルで耐久性のあるソリューションを提供します。データが生成され、パブリッシュ・サブスクライブ・メッセージング・モデルで連続して順次処理されるユースケースには、ストリーミングを使用します。

ストリーミングは、次の目的で使用できます:

メッセージング
Streamingを使用して、大規模システムのコンポーネントを分離します。プロデューサおよびコンシューマは、ストリーミングを非同期メッセージ・バスとして使用し、独自のペースで独立して動作できます。
メトリックおよびログの取込み
従来のファイル廃棄方法のかわりとしてストリーミングを使用して、重要な運用データを索引付け、分析およびビジュアライゼーションにより短時間で利用できるようにします。
Webまたはモバイル・アクティビティ・データの取込み
Webサイトまたはモバイル・アプリケーションからアクティビティ(ページ・ビュー、検索、その他のユーザー・アクションなど)を取得するためにストリーミングを使用します。この情報は、リアルタイムのモニタリングおよび分析の他、データ・ウェアハウジング・システムではオフラインでの処理およびレポート作成のために使用できます。
インフラおよびアプリケーション・イベントの処理
監査や会計、関連するアクティビティについてのライフサイクル・イベントをレポートするために、クラウド・コンポーネントの統合エントリ・ポイントとしてStreamingを使用します。

Streamingの特徴

ストリーミングには次の機能があります。

完全な管理
ストリーミングは、基礎となるインフラストラクチャからプロビジョニング、デプロイメント、メンテナンス、セキュリティ・パッチ適用およびレプリケーションまで、完全に管理されます。モニタリングおよびデフォルトのメトリックとの統合により、操作が容易になります。

Oracleはストリーム・パーティションを管理し、コンシューマ・グループはメッセージ・オフセットを処理できます。

耐久性と可用性
ストリーミング・サービスにパブリッシュされたメッセージは、使用可能な場合、3つの可用性ドメイン間で同期的にレプリケートされます。単一の可用性ドメインがあるリージョンでは、データは複数のフォルト・ドメインにレプリケートされます。これにより、可用性ドメインまたはフォルト・ドメインに障害が発生してもデータが失われることはありません。その結果、耐久性の高いデータが得られます。

Oracle Cloud Infrastructureでは、ストリーミングのサービス・レベル合意(SLA)が提供されます。詳細は、Oracle Cloud Infrastructureサービス・レベル合意ページを参照してください。

SECURITY

ストリーミング・データは保存中と転送中の両方で暗号化されるため、メッセージの整合性が保証されます。特定のコンプライアンスまたはセキュリティ標準を満たす必要がある場合は、Oracleで暗号化を管理したり、Oracle Cloud Infrastructure Vaultサービスを使用して独自の暗号化キーを安全に格納および管理できます。

Oracle Cloud Infrastructure Identity and Access Management (IAM)との統合により、誰がどのキーにアクセスし、どのような操作がそのリソースで実行できるかを制御できます。

プライベート・エンドポイントは、インターネットを介してストリームにアクセスできないように、テナンシ内の指定された仮想クラウド・ネットワーク(VCN)へのアクセスを制限します。

詳細は、「ストリームの保護」を参照してください。

ストリーム処理
Streaming's integration with Oracle Cloud Infrastructure Service Connector Hub means that you can designate a stream as a data source, use Oracle Cloud Infrastructure Functions to transform the stream's messages, and output the transformed messages to Object Storage or any other supported Service Connector Hub target while maintaining Streaming's order guarantees.
Kafka互換性
ストリーミングにより、独自のApache Kafkaクラスタをホストするインフラストラクチャの設定、メンテナンスおよび管理をオフロードできます。

ストリーミングほとんどのKafka APIと互換性があるため、Kafka用に記述されたアプリケーションを使用して、コードを書き換えることなくストリーミング・サービスとの間でメッセージを送受信できます。詳細は、「Kafka APIの使用」を参照してください。

ストリーミングでは、Kafka Connectエコシステムも利用して、すぐに使用可能なKafkaソースおよびシンク・コネクタを使用して、ファーストパーティ製品およびサードパーティ製品と直接インタフェースします。詳細は、Kafka Connectの使用を参照してください。

ストリーミングの仕組み

ストリーミングの動作を次に示します:

プロデューサは、メッセージストリーム(これは追加専用ログ)に公開します。これらのメッセージは、スケーラビリティのためにOracle管理のパーティション間で分散されます。

パーティションを使用すると、メッセージを複数のノード(またはブローカ)に分けることによってストリームを分散できます。各パーティションを別のマシンに配置できるため、複数のコンシューマが1つのストリームをパラレルに読み取ることができます。

コンシューマは、1つ以上のパーティションからメッセージを読み取ります。コンシューマは、パーティションがホストされる場所に関係なく、どのパーティションからでも読み取ることができます。ストリーム内の各メッセージは offset値でマークされるため、コンシューマは、ストリームが中断された場合に中断された場所を取得できます。パーティションからのメッセージは、生成された順序と同じ順序で配信されることが保証されます。

コンシューマは、パーティションとオフセットを指定することによって、またはストリーム全体の消費をグループのメンバーによって調整するコンシューマ・グループのメンバーとして、メッセージを明示的に読み取ることができます。

ストリーミングの概念

ストリーミングを理解して操作するには、次の概念が必要です。

流れ
メッセージのパーティション化された追加専用ログ。
ストリーム・プール

共有Kafkaまたはセキュリティ設定など、ストリームの編成および管理に使用できるグループ。

分割
ストリームのセクション。パーティションを使用すると、メッセージを複数のノードで分割することによってストリームを分散できます。これにより、複数のコンシューマが1つのストリームからパラレルに読み取ることができます。
カーソル

ストリーム内のロケーションへのポインタです。このロケーションは、パーティションまたはグループの現在のロケーションにある特定のオフセットまたは時間へのポインタです。

コンテンツ
ストリームに公開されるBase64でエンコードされたメッセージ。ストリーミングはスキーマに依存せず、XML、JSON、CSV、gzipなどの圧縮形式などのメッセージ形式を受け入れます。プロデューサとコンシューマは、メッセージ形式に同意する必要があります。
生産者
ストリームにメッセージを公開するエンティティ。
コンシューマ
1つ以上のストリームからメッセージを読み取るエンティティ。
コンシューマ・グループ
ストリーム内のすべてのパーティションからのメッセージを消費するように調整する一連のインスタンス。特定のパーティションからのメッセージは、グループ内の1つのコンシューマのみが消費できます。
instance
コンシューマ・グループのメンバー。インスタンスは、グループ・カーソルの作成時に定義されます。グループ・メンバーシップは対話によって保守されます。相互作用がないとタイムアウトになり、インスタンスはコンシューマ・グループから削除されます。
キー
関連メッセージのグループ化に使用する識別子。
オフセット
パーティション内のメッセージの場所。パーティション内の各メッセージは、オフセットによって識別されます。コンシューマは、選択した任意のオフセットから始まるメッセージを読み取ることができます。オフセットを使用して、中断した場合にストリームからの読取りを再起動できます。

ストリームの利点

ストリームには、次のような従来のメッセージ・キューよりもいくつかの利点があります。

構成可能なメッセージの永続性
データの保持期間を制御します。ストリーム内のメッセージは不変であり、ストリームの構成済保存期間全体で使用できます。
リプレイ
ストリームのメッセージはコンシューマで処理されるとすぐに削除されないため、構成された保存制限内でいつでもストリーム内の任意のメッセージとすべてのメッセージをリプレイできます。
メッセージの保証
各メッセージは、少なくとも1回は配信されることが保証されます。オフライン化する前にコンシューマがメッセージをコミットできないなど、メッセージが複数回配信される場合もあります。
オーダー保証
ストリーム内のメッセージは、パーティションごとに生成される順序と同じ順序で配信されます。
クライアント側のカーソル
クライアント・アプリケーションは、どのメッセージを読み取るかを制御および追跡し、必要に応じてカーソルを移動して最大限の柔軟性を確保できます。
水平スケール
パーティションを利用すると、複数の消費者のニーズに合わせてスループットをスケール・アップできるため、柔軟性が高まります。
コンシューマ・グループ
コンシューマ・グループは、複数のコンシューマにメッセージをバランスのとれた方法で配信するために必要なすべての調整を処理します。この管理は、すべてのメンバーにかわってコンシューマ・グループによって処理されるため、オーバーヘッドを削減し、運用しやすくなります。