0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GCP Pub/Subについて

Posted at

Cloud PubSubとは?

主な役割

・パブリッシャー(Publisher)

・トピック(Topic)

・サブスクリプション(Subscription)

・サブスクライバー(Subscriber)

・ACK(Acknowledge)

・ACKデッドライン(Ack Deadline)

パブリッシャー(Publisher)とは?

  • パブリッシャーは、作成したメッセージを指定したトピックに送信する。

例:「新しい注文が入りました!」とトピックに伝える。

トピック(Topic)とは?

  • パブリッシャーはメッセージをトピックに公開する(Publishする)
  • トピックはメッセージを メッセージキュー(Message Queue) には格納せず、すぐにサブスクリプションに転送する。
  • トピック自体はメッセージを保管しない。

例:「注文トピック」に「新しい注文が入りました!」というメッセージが届く。

サブスクリプション(Subscriptionとは?

  • サブスクリプションは、トピックからメッセージを受け取るための「窓口」。
  • サブスクライバー(受信者)はサブスクリプションを通じてトピックのメッセージを受信する。
  • サブスクリプションには2種類のメッセージ受信モードがある:
    • Pull モード
      • サブスクライバーが明示的にPub/Subに対してメッセージを「ください!」とリクエストする。
      • ポーリング方式で、自分のタイミングでデータを取得可能。
    • Push モード
      • Pub/SubがサブスクライバーにメッセージをHTTPリクエストで送信する。
      • サブスクライバーは専用のエンドポイント(URL)を用意する必要がある。
  • ACK(確認応答) されないメッセージは、最大7日間保持される。

例:「注文トピック」とサブスクライバーを結ぶパイプ。

サブスクライバー(Subscriber)とは?

  • サブスクライバーは、サブスクリプションを通じてトピックからメッセージを受け取り、処理する
  • Pull方式の場合
    • サブスクライバーがPub/Subに「メッセージをください」と要求する。
    • 自分のペースで処理できる。
  • Push方式の場合
    • Pub/Subがメッセージをサブスクライバーに自動で送信する(HTTPリクエスト)。
    • 即座にリアルタイム処理を行う。
  • メッセージを受け取った後、サブスクライバーはPub/Subに「ちゃんと受け取ったよ!」とACKを返す必要がある。
  • ACKが返されると、そのメッセージはPub/Subのストレージから削除される。

例:「新しい注文が入りました!」と受信して、次の処理を行う。

Pubsubのack(Acknowlede)とは?

  • ACK(確認応答)は、サブスクライバーがPub/Subに対して「メッセージを受け取ったよ!」と通知する仕組み。
  • ACKがないとメッセージは再送され続けるため、確実に処理されたことを示す必要がある
    • サブスクライバーがサブスクリプションを通じてメッセージを受信
    • メッセージを処理
    • 処理が成功したらPub/SubにACKを送る
    • ACKを受け取ったPub/Subはメッセージをストレージから削除する
  • ACKデッドライン(デフォルト10秒)以内にACKがない場合、Pub/Subはメッセージを「未処理」と判断し、サブスクライバーに再配信する。

ACKデッドライン(Ack Deadlineとは?

  • ACKデッドラインは、サブスクライバーがメッセージを受け取ってからACKを返すまでの猶予時間を制御する仕組み。
  • この時間内にACKしないと、Pub/Subは「メッセージが処理されなかった」と判断して再配信する。
  • デフォルト値:10秒
  • 最大値:600秒(10分)

Cloud Pub/Subの運用における重要なポイント

ACKの重要性

  • メッセージをサブスクライバーが確実に処理したことを確認するためには、ACK(確認応答)が不可欠です。
  • ACKしない場合、Pub/Subはそのメッセージを「未処理」とみなして、サブスクライバーに再送信を繰り返します。このため、サブスクライバーがACKを返さない場合、メッセージは増え続け、システムに負荷をかけるリスクがあります

ACKデッドラインと再送制御

  • サブスクライバーがACKを返すまでに必要な時間を管理するためのACKデッドラインが重要です。デフォルトで10秒の猶予があり、この時間内にACKされないと、Pub/Subは再送を行います。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?