システム設計におけるメッセージキュー

0 0 0

Người đăng: NGUYỄN ANH TUẤN

Theo Viblo Asia

image.png

オンラインストアを想像してみてください。顧客が注文するたびに、以下のことを行う必要があります。

  1. 支払いを処理する。
  2. 在庫を更新する。
  3. 確認メールを送信する。

特にピーク時にこれらすべてを即座に行うと、顧客の体験が遅くなる可能性があります。

この場合、多数のアプリケーションイベントがあり、それらをすべて一度に処理することはできません。

image.png

もちろん、サーバーをスケールアップして、これらの大量のアプリケーションイベントを処理することもできますが、一度にすべてを処理する必要がない場合は、これらのイベントをキューに入れて後で処理する方が良いでしょう。

メッセージキューの基本アーキテクチャ

メッセージキューは、非同期通信をサポートするメモリに格納される永続的なコンポーネントです。バッファとして機能し、非同期リクエストを分散します。

メッセージキューの基本的なアーキテクチャは単純です。プロデューサーまたはパブリッシャーと呼ばれる入力サービスは、メッセージを作成してメッセージキューに公開します。コンシューマーまたはサブスクライバーと呼ばれる他のサービスは、キューに接続し、メッセージによって定義されたアクションを実行します。

image.png

実際のシナリオでは、キューに書き込む多くのアプリとキューから読み取る多くのサーバーが存在する可能性があります。

image.png

例に戻りましょう

したがって、この場合、各タスクを即座に処理する代わりに、キューの最後に追加し、このキューからサーバーに送信できます。

  1. 注文が行われた:注文の詳細がメッセージに入れられます。
  2. メッセージが送信された:メッセージがキューに追加されます。
  3. ワーカーが処理する:別のプロセス(ワーカー)がキューの先頭からメッセージを取り出し、タスクを処理します。

image.png

また、サーバーはメッセージを受信して処理したことを確認し、キューはそれを削除して2回目に送信されないようにします。

image.png

メッセージキューを使用する利点

主な利点は、これらのイベントを分離することであり、このメッセージキューにより、これらのイベントを非同期的に処理できます。処理できるようになるまで、それらをキューに入れることができます。

メッセージキューを使用すると、コンシューマーが処理できない場合でも、プロデューサーはメッセージをキューに投稿できます。

image.png

また、プロデューサーが利用できない場合でも、コンシューマーはキューからメッセージを読み取ることができます。

image.png

もう1つの大きな利点は、耐久性があることです。キューがクラッシュしても、データはRAMではなくディスクに保存されているため、失われることはありません。

image.png

ワーカーがメッセージの処理中にクラッシュしても問題ありません。メッセージはまだキューにあり、別のワーカーによって取得されます。

image.png

メッセージキューはスケーラビリティも提供します。注文が殺到した場合、キューは単に長くなります。Webサイトに影響を与えずに、ワーカーを追加して追加の負荷を処理できます。

さまざまなキュータイプ

メッセージキューには複数のタイプがあります。最も一般的なものは次のとおりです。

  • FIFO(先入れ先出し):通常の行列と同じように、メッセージは到着順に処理されます。これは、支払い処理などにとって重要です。
  • 優先度キュー:一部のメッセージは他のメッセージよりも重要な場合があります。これらを優先して、より早く処理されるようにすることができます。

image.png

FIFOキューと優先度キューの一般的なユースケース

FIFOキューのユースケース

  1. 注文処理システム

    • 理由:注文は受信順に処理する必要があるため、FIFOキューが最適です。これにより、公平性が保たれ、在庫の整合性が維持されます。
  2. チケット予約システム

    • 理由:「先着順」の原則を維持するために、FIFOキューが使用されます。これにより、システムの公平性と透明性が確保されます。
  3. ログ処理

    • 理由:イベントの時系列を正確に維持するために、ログエントリはFIFOキューで処理されます。これにより、デバッグや監査が容易になります。

優先度キューのユースケース

  1. 緊急対応システム

    • 理由:緊急度の高い要求(例:救急車の派遣)を優先的に処理する必要があるため、優先度キューが適しています。
  2. カスタマーサポートチケットシステム

    • 理由:重要な顧客や緊急の問題を優先的に処理するために、優先度キューが使用されます。これにより、顧客満足度が向上します。
  3. オペレーティングシステムのタスクスケジューリング

    • 理由:システムの効率を最大化するために、重要なタスクを優先的に実行する必要があります。優先度キューはこれを可能にします。

プッシュ対プル

一部のキューはワーカーがメッセージを要求するのを待ち(プルベースのキュー)、他のキューはメッセージをワーカーに積極的に送信します(プッシュベースのキュー)。

image.png

メッセージキューのいくつかの一般的な例を次に示します。

image.png

  • RabbitMQ:多くのユースケースに適した汎用的なキューです。
  • Kafka:高スループットとリアルタイムのデータストリーミング用に構築されています。ロギングやイベント駆動型アーキテクチャなどに最適です。
  • Amazon SQS(Simple Queue Service):AWSが提供する完全に管理されたクラウドベースのキューサービスです。遅延キューとデッドレターキューなどの機能を備えた、スケーラブルで信頼性の高いサービスです。

ボーナス:メッセージキューの具体的なユースケース

  1. マイクロサービスアーキテクチャ

    • 説明:異なるサービス間の非同期通信を可能にし、システムの柔軟性と拡張性を向上させます。
  2. バッチ処理

    • 説明:大量のデータを効率的に処理するために使用されます。例えば、夜間のデータ分析や報告書生成などに適しています。
  3. イベント駆動型アーキテクチャ

    • 説明:システム内のさまざまなコンポーネント間でイベントを伝播させるために使用されます。これにより、システムの反応性と柔軟性が向上します。
  4. 負荷分散

    • 説明:タスクを複数のワーカーに分散させることで、システムのパフォーマンスと可用性を向上させます。
  5. クロスプラットフォーム統合

    • 説明:異なる技術スタックやプラットフォーム間でデータを交換するための中間層として機能します。
  6. IoTデータ処理

    • 説明:多数のIoTデバイスからのデータストリームを効率的に処理し、分析するために使用されます。

これらのユースケースは、メッセージキューがさまざまな状況で重要な役割を果たすことを示しています。適切なキュータイプを選択することで、システムの効率性、信頼性、スケーラビリティを大幅に向上させることができます。

この記事は、Message Queues in System Designから翻訳されました。

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tán gái theo kiểu Message Queue là thế nào?

. Bài toán. Vào những năm 1900, khi mà công nghệ chưa phát triển, con người chỉ nói chuyện với nhau trực tiếp hoặc qua thư... . Trai tài gái sắc, họ nói chuyện với nhau một cách thoải mái, tự nhiên. Mọi chuyện yên bình cho đến khi có anh chàng C đến, chiều cao chuẩn 1m8 chứ không cộng thêm sừng. C c

0 0 43

- vừa được xem lúc

Sự khác nhau về thiết kế trải nghiệm người dùng trên ứng dụng dành cho người Mỹ và người Nhật

Thỉnh thỏang tôi có nghe đồng nghiệp nói vui là các app của Nhật giao diện lạ nhỉ, không giống các mình thường hay thấy. Giao diện thì cũng tối giản nữa.

0 0 30

- vừa được xem lúc

17 điều cho tuổi 30 - Honda Ken - Điều 4

ĐIỀU 4. KIỂM TRA THƯỜNG XUYÊN HÌNH TƯỢNG BẢN THÂN.

0 0 33

- vừa được xem lúc

17 điều cho tuổi 30 - Honda Ken - Điều 3

ĐIỀU 3. HÌNH MẪU THẮNG (THUA) CỦA BẢN THÂN.

0 0 45

- vừa được xem lúc

Phân tích nội dung và tạo đám mây từ khóa (word cloud) từ đoạn văn bản tiếng Nhật

Chắc hẳn là khái niệm đám mây từ khóa (word cloud) đã không còn xa lạ gì trong thời đại thông tin số bùng nổ như ngày nay. Chúng ta thường thấy nó xuất hiện trên các bài báo, công cụ tìm kiếm, thể hiệ

0 0 205

- vừa được xem lúc

Xây dựng mô hình dịch máy cho cặp ngôn ngữ Nhật - Việt

Mở đầu. Dịch tự động hay còn gọi là dịch máy (tiếng Anh: machine translation) là một nhánh của xử lý ngôn ngữ tự nhiên thuộc phân ngành trí tuệ nhân tạo, nó là sự kết hợp giữa ngôn ngữ, dịch thuật v

0 0 316