欢迎来到cool的博客
7

Music box

Click to Start

点击头像播放音乐
新博客链接

拆解雲端 Message Service:Google Cloud Pub/Sub

https://blog.gcp.expert/google-cloud-pub-sub-aws-sqs-comparison/

 

最近有機會在 GCP 上開發分散式的系統,透過 GCP Cloud Pub/Sub 來解決我們系統上的瓶頸,於是整理了有關 Pub/Sub 的使用心得與經驗,同時與過去使用 Amazon Simple Queue Service (SQS) 比較。

Cloud Pub/Sub 簡介

在 Pub/Sub 中有下列角色:

•  Pub/Sub topic: Publish application 可以創建 topic 用來發送 messages (tasks) 到此 topic。
•  Pub/Sub subscription: Subscriber applications 可以建立多個 subscription 訂閱同一個 topic,當此 topic 有新的 messages 時,會同時發送到所訂閱的 subscription。
•  Publisher application: 發送 messages 到特定的 Pub/Sub topic。
•  Subscriber application: 從特定的 Pub/Sub subscription 接收 messages、處理。

與 AWS SQS 較大的不同是,在 Pub/Sub 中,可以支援出 one-to-many (fan-out), many-to-one (fan-in), many-to-many 的系統架構。

 

Pub/Sub 主要處理的流程如下:

1. Publisher application 在 Pub/Sub 中創建一個 topic,然後可以將 messages 傳送至這個 topic 中。
2. 被傳送至 topic 中的 message,在被處理 (收到 subscriber 的 acknowledge request) 前,會被保存在這個 topic 中 (預設為保留七天,七天之後如果 Pub/Sub 都沒有收到 acknowledge request 的話,Pub/Sub 會自動刪除這筆 message)。
3. Subscriber applications 向 Pub/Sub 訂閱 subscription 後,所有被發送到 topic 的 messages 都會發送到 定閱的 subscriptions,這時候 subscriber applications 可以有兩個動作:
4. 主動向 Pub/Sub 發送 pull 請求,拿到 messages。
5. 設定 public endpoint 讓 Pub/Sub 推送給你的 subscribers。
6. Subscriber applications 在處理完 message 後,會依照 message id (每個 message 都有的 unique id),發送 acknowledge request 給 Pub/Sub,以確定訊息已經處理完成。
7. 當 Pub/Sub 收到某一 message id 的 acknowledge request 後,會將此 message 從 Pub/Sub 中刪除。

返回列表