Pub/Sub 服務費用的計算依據如下:
- 訊息擷取與傳送
- 與搜尋功能有關的訊息儲存作業:快照與保留的已確認訊息
訊息擷取與傳送
傳送訊息的費用
系統會根據擷取和傳送訊息作業每月所傳輸的資料量計費,前 10 GB 的用量免費。超出免費用量之後,擷取或傳送訊息的費用為每 TiB $40 美元。
訊息使用的資料量為下列各項的總和:
- 編碼訊息內文字串的位元組數
- 每個屬性的鍵值大小及屬性值
- 計為 20 個位元組的時間戳記
message_id
字串的大小- 額外的選用欄位,像是與搶先體驗內容相關聯的欄位,或與限制存取 API 相關聯的欄位
無論訊息大小為何,系統會以至少 1,000 個位元組來評估每個發布、推送或提取要求。也就是說,如果訊息小於 1000 個位元組,在單一要求內批次處理多則訊息較為經濟實惠。
您僅須針對發布要求和使用提取、streamingPull 或推送作業傳遞的資料支付擷取和傳送費用。其他作業完全免費。
如果您使用美元以外的貨幣付款,系統將按照 Google Cloud SKU 頁面上列出的相應貨幣價格計費。費用計算單位為 TiB (240 個位元組,約為 1.1 兆位元組)。
經過篩選的訊息
Pub/Sub 會自動確認不符合篩選條件的訊息,但您仍必須為這些訊息支付訊息傳送費用。
1,000 位元組這個下限規定不適用於 Pub/Sub 服務自動確認的訊息。無論訊息有多小,訊息傳送費用都是根據這些訊息的資料量 (以位元組為單位) 計算。
資料區域輸出費
不同 Google Cloud 區域之間的網際網路輸出和訊息傳遞費率與 Compute Engine 網路費率相同,但下列情況除外:
- 使用 Pub/Sub 無須支付可用區輸出費。
- 輸出至 Google 產品無法免除輸出費。
舉例來說,一則 1 MiB 的訊息在 us-west1
中發布並傳送給位於 europe-west1
的訂閱者,這項作業會產生兩個不同 SKU 的費用:
- 2 MiB 的「訊息傳送基本費用」(1 MiB 的發布及傳送)
- 1 MiB 的「由美洲傳送至 EMEA 區域間資料費用」
如要查看用量,請將帳單資料匯出至 BigQuery。設定匯出作業之後,您就能使用如下查詢來確認自己的用量:
SELECT TIMESTAMP_TRUNC(usage_start_time, day) as usage_date,
sku.description,
usage.unit,
sum(usage.amount) as egress_volume
FROM `BILLING_EXPORT_TABLE`
WHERE
_PARTITIONTIME >= TIMESTAMP("2019-01-01")
AND service.description = "Cloud Pub/Sub"
AND (sku.description like "Internet data%"
OR sku.description like "Inter-region data%")
GROUP BY usage_date, sku.description, usage.unit;
Pub/Sub 會自動確認不符合篩選條件的訊息。您不必為 Pub/Sub 自動確認的訊息支付輸出費。
示例:擷取及傳遞訊息
為了說明可能的整體作業成本,我們假設有一個應用程式以每秒 1 MiB 的速率,發布 1024 KB 的訊息至有兩個訂閱項目的主題。假定訂閱者能夠應付這樣的速率:Pub/Sub 以每秒 1 MiB 的速率進行擷取,以每秒 2 MiB 的速率進行傳送,總資料傳輸速率為每秒 3 MiB。一個月 (30 日) 期間的總資料用量為 3 MiB/second x 3600 seconds/hour x 24 hours/day x 30
days/month x 1 month/(2^20 MiB/TiB) = 7.416 TiB
。減去前面 10 GB (免費) 後,資料用量為 7.406 TiB,落在每 TiB $40 美元的方案範圍,因此需支付 $296.24 美元。
跨專案計費
如果您跨專案使用 Pub/Sub,則 Pub/Sub 費用將計入包含所要求資源的專案:
- 發布費用將計入包含主題的專案。
- 訂閱費用將計入包含訂閱項目的專案。
舉例來說,如果訂閱項目存在於「A」專案中,則從該訂閱項目提取資料的費用將會計入「A」專案,即使該訂閱項目附加於「B」專案中的某個主題。
如果「A」專案中的某個授權服務帳戶消費了來自「B」專案中某個訂閱項目的訊息,則從該訂閱項目提取資料的費用將會計入「B」專案。
與搜尋功能有關的訊息儲存作業
定價
如為下列情況,訊息儲存費為每月每 GiB $0.27 美元:
- 訂閱項目設為保留已確認的訊息,以利用搜尋功能重新處理訊息。在這種情況下,會針對保留的已確認訊息收取儲存費。
- 建立訂閱項目的快照。在這種情況下,會針對儲存快照的未確認訊息收取訊息儲存費。如果訂閱項目在快照建立時有待處理的未確認訊息,則會收取一次性費用,金額相當於儲存待處理工作七天的費用。
相較於保留所有已確認的訊息,使用快照來保留用於回覆的訊息,可能更為經濟實惠,因為單一快照可以在多個訂閱項目中使用。快照的計費資料量通常不大,資料量會隨著快照的存在時間慢慢增加。設為保留已確認訊息的訂閱項目,會保留固定一段時間的訊息資料 (穩定狀態下),但可能更加便利。
示例:保留已確認訊息的訂閱項目
假設主題具備一個訂閱項目和下列特性:
- 這個主題固定以每秒 1 MiB 的速率接收資料。
- 訂閱者持續更新這個訂閱項目的資料,並同樣以每秒 1 MiB 的速率使用資料,新的訊息待處理工作可忽略不計。
- 訂閱項目已設為將已確認訊息保留 7 天。
在這項設定中,已確認訊息量的增加情況如下所示:1 MiB/second x 3600 seconds/hour x 24 hours/day = 86.4 GiB/day
。
7 天後,保留的已確認訊息開始過期,儲存的已確認訊息總量達到穩定值:7 days x 86.4 GiB/day =
605 GiB
。儲存這些訊息量的總月費約為 605 GiB-month x $0.27/GiB-month = $163
。
示例:快照訊息儲存費
快照訊息儲存費包含發布至快照主題訊息的增量費用,以及建立時的ㄧ次性費用。以保留已確認訊息的訂閱項目快照為例:除非提前刪除快照,否則快照的生命週期為七天,因為用於建立快照的訂閱項目並沒有待處理的未確認訊息。第一分鐘發布的資料 (60 MiB) 會儲存 7 天又 1 分鐘,第二分鐘發布的資料會儲存 7 天又 2 分鐘,依此類推。在快照過期時,這種情況產生的待處理資料大小為 605 GiB,總計使用 1/2 x 605 GiB x 7 days = 2118 GiB-days
的儲存空間,一個月 (30 日) 費用則為 2118 GiB-days x (1/30 months/day) x $0.27/GiB-month = $19
。因此,快照可能比保留已確認訊息更具成本效益。
示例:含待處理工作的訂閱項目快照
如果訂閱項目在快照建立時有待處理的未確認訊息,則會收取一次性費用,金額相當於儲存待處理工作整整七天的費用。舉例來說,假設訂閱項目包含 10 GiB 未確認訊息的待處理工作,在建立快照時收取的一次性費用為 10 GiB x 7 days / 30 days/month x 0.27/GiB-month = $0.63
。
資源位置限制的影響
如果訊息儲存空間政策強制要求資料離開某個 Google Cloud 區域,可能會導致區域輸出 (網路) 費增加。假設訊息經歷下列程序:
- 在「A」區域發布
- 轉送至「B」區域儲存
- 傳送至位於「C」區域的訂閱者用戶端
在這種情況下:
- 系統會向包含主題的專案收取從「A」區域輸出至「B」區域的網路費。
- 系統會向包含訂閱項目的專案收取從「B」區域輸出至「C」區域的費用。
如果已發布訊息的儲存區域不同於該訊息的發布區域,系統才會向包含主題的專案收取輸出費 (也就是「B」和「A」實際上是兩個不同的區域);只有在已發布訊息的儲存區域不同於訂閱者用戶端的所在區域時 (即「C」和「B」為不同區域),系統才會向包含訂閱項目的專案收取輸出費。