Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OCI Queue Service 技術概要

OCI Queue Service 技術概要

oracle4engineer

January 27, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. 非同期メッセージングをサーバレスに実現する、ハイパフォーマンス・メッセージキュー 2 Copyright © 2023, Oracle and/or its affiliates OCI

    Queue Service ▪ ユースケース • アプリケーションを分離し、疎結合なアーキテクチャを構築 • 信頼性の高いスケーラブルなメッセージ基盤の活用 ▪ 特徴 • フルマネージド、オートスケール • OCI Streaming を補完する適用領域 • オフセット カーソル 無し、メッセージ消費は逐次確認 • パーティション無し、需要に応じてオートスケール • at-least-once 配信、配信順序はベストエフォート • Dead Letter Queue (DLQ) の提供 (異常終了メッセージを退避) • キューメッセージの暗号化 • STOMPプロトコルをサポート ▪ 価格 最初の100万リクエストは無料、移行100万リクエストごとに¥30.8 * 1 リクエストのメッセージ容量が64KBを超える場合、64KBを1単位として複数のリクエストとして計算 ** 複数メッセージの同時取得は、メッセージ容量に基づいて計算 Container Engine For Kubernetes Containers Virtual Machine OCI Queue Service Functions Producer … etc. Container Engine For Kubernetes Containers Virtual Machine Functions Consumer … etc. • STOMP: Simple Text Orientated Messaging Protocol 軽量なメッセージングプロトコル regular dead letter
  2. コンテンツ(メッセージ) • 文字列形式のキュー内の要素 プロデューサ • キューにメッセージを送信するクライアント コンシューマ • キューからメッセージを受信するクライアント •

    コンシューマは、メッセージの受信後にキューからメッセージを削除可能 最大保存期間 • コンシューマによって削除されない場合の、メッセージがシステムによって自動的に削除されるまでキューがメッセージを 保持する期間 最大配信回数 • デッド レター キューに送信されるまでに、メッセージがコンシューマに配信され、更新または削除されていない回数 OCI Queue Service の概念 Copyright © 2023, Oracle and/or its affiliates 3
  3. メッセージの状態 公開中 • メッセージは、1つ以上のプロデューサによってキューに公開 • 各プロデューサにて保存期間を指定 • 保存期間が指定されていない場合、メッセージはキュー(サービスの単位)で定義された保存期間に応じる 処理中 •

    複数のコンシューマが1つのキューからメッセージを消費可能 • コンシューマ数はスケーリング可能 • メッセージは一度コンシューマに配信されると、表示タイムアウトに応じて他のコンシューマから見えなくなる 更新中 • メッセージの処理に予想よりも時間がかかる場合、コンシューマはメッセージの表示タイムアウトを延長可能 • 表示タイムアウトを延長すると、メッセージの削除権は維持され、他のコンシューマから見えない状態が続く 削除中 • コンシューマにメッセージが配信され処理された後は、別のコンシューマへの再配信を防ぐためにメッセージ削除が必要 OCI Queue Service の原則 Copyright © 2023, Oracle and/or its affiliates 4
  4. 基本的な処理の流れ ①プロデューサはメッセージをOCI Queueに公開 (PutMessage) ②コンシューマがQueue上の取得可能なメッセージを取得 (GetMessage) • 取得時のタイムアウトを指定可能(ポーリング・タイムアウト) • メッセージの最大取得数の指定が可能

    ※指定がない場合は20 • GetMessageのレスポンスからメッセージのReceipt(メッセージの識別子)が取得可能 • ReceiptはメッセージのUpdate/Deleteの際に利用する ③コンシューマが取得したメッセージを処理 • 処理中のメッセージを他のコンシューマから見えないようにすることができる(表示タイムアウト) • 処理中は表示タイムアウトの更新が可能(UpdateMessage) ④コンシューマがQueueに対して処理したメッセージの削除リクエスト(DeleteMessage) OCI Queue Service の原則 Producer OCI Queue Consumer ① ② ④ ③ Copyright © 2023, Oracle and/or its affiliates 5
  5. 2つのタイムアウト ポーリング・タイムアウト • コンシューマがメッセージの取得を待機する時間 • タイムアウトが経過して消費可能なメッセージがない 場合、リクエストは空のレスポンスを返す • ポーリング・タイムアウトを増やすと、コンシューマが キューにメッセージをリクエストする回数が減る

    • デフォルトは30秒 表示タイムアウト(メッセージロック) • 他のコンシューマに表示されない期間 • コンシューマは、別のコンシューマが同じメッセージを取 得できないように、メッセージをロック可能 • キュー・レベル/メッセージの消費または更新時に指定 することが可能 OCI Queue Service の概念 Queue Consumer GetMessage リクエスト 指定(設定)した時間、Consumerが ポーリング 消費可能な メッセージがあれば それを取得 Consumer タイムアウト時は 空のレスポンス を返却 Consumer Queue Consumer A GetMessage リクエスト 指定(設定)した時間、メッセージをロック メッセージロック 中はメッセージ が見えない Consumer B Copyright © 2023, Oracle and/or its affiliates 6
  6. メッセージ配信の仕組み (Put/Get/Update/Delete) Copyright © 2023, Oracle and/or its affiliates 7

    1. Producerは、デフォルトのメッセージ保持時間でメッセージをキューに送信。Producerは、キュー サービスがメッセージを受信して保存したという確認を受け取る。 2. Consumer A は、表示タイムアウト A 内に処理することになっているメッセージを受信。 3. Consumer B は、利用可能な唯一のメッセージがConsumer A によって既に消費されているため、何も受信しない。 4. Consumer A は表示タイムアウト A 内にメッセージを処理できなかったため、メッセージを更新して表示タイムアウトを延長。 5. Consumer B は再度メッセージを受信しようとするが、利用可能な唯一のメッセージがConsumer A によって消費および拡張されたため、受信できない。 6. 延長された表示タイムアウトが経過すると、メッセージが再び表示されるように。 7. Consumer B は 3 回目のメッセージの受信を試みる。Consumer B はメッセージを受信。これは、表示タイムアウト B 内に処理することになる。 8. Consumer A はメッセージを受信しようとするが、Consumer B がメッセージを消費したため、何も受信しない。Consumer A は、メッセージの表示タイムアウトを延長したり、メッセージを削除 したりすることができなくなる。 9. Consumer B はメッセージを正常に処理し、キューからメッセージを削除しようとする。Consumer B は、メッセージが完全に削除されたという確認を受け取り、このメッセージは他のConsumer に配信されることはない。
  7. 制限とスループット Queue • メッセージ: 128KB • ストレージ/キュー: 2GB Streaming •

    メッセージ: 1MB • ストレージ/Stream: 無制限(最大保持期間有り) OCI Queue と OCI Streaming の違い Copyright © 2023, Oracle and/or its affiliates 13 Producer Consumer OCI Queue - 1000 APIリクエスト/秒 - 10MB イングレス/秒 - 512KB PutMessage/ 秒 or 20メッセージ /秒 - 1000 APIリクエスト/秒 - 10MB エグレス/秒 - 2MB GetMessage/ 秒 or 20メッセージ /秒 Streaming Producer - 無制限リクエスト数 - 1MB 書込み/秒/パー ティション - 5リクエスト/秒/ Consumer Group - 50 Consumer Group/Stream Consumer Group
  8. 配信方式 Queue Streaming OCI Queue と OCI Streaming の違い Copyright

    © 2023, Oracle and/or its affiliates 14 Producer Consumer OCI Queue Streaming Producer Consumer Group 4 3 2 1 Consumer Consumer Consumer 4 3 2 1 3 2 1 1 2 3 Consumer Group 3 2 1 3 2 1