什麼是發佈/訂閱簡訊?
發佈/訂閱簡訊是非同步通訊模型,讓開發人員可輕鬆在雲端中建立高功能和架構複雜的應用程式。在現代的雲端架構中,應用程式會分離成許多較小的獨立建置區塊,這些區塊稱為服務。發佈/訂閱簡訊為這些分散式系統提供即時事件通知。其支援獨立軟體模組之間更具擴展性且可靠的通訊。
發佈/訂閱簡訊如何運作?
發佈-訂閱系統有四個關鍵元件。
訊息
訊息是從發送方傳送到接收方的通訊資料。訊息資料類型可以從字串到表示文字、視訊、感測器資料、音訊或其他數位內容的複雜物件。
主題
每條訊息都有與之相關聯的主題。主題就像是發送方和接收方之間的中介通道。它維護對有關該主題的訊息感興趣的接收方清單。
訂閱者
訂閱者是訊息的接收方。訂閱者必須註冊 (或訂閱) 感興趣的主題。它們可以執行不同的功能或對消息平行執行不同的操作。
發佈者
發佈者是傳送訊息的元件。它建立關於某個主題的訊息,並將它們僅傳送一次給該主題的所有訂閱者。發佈者和訂閱者之間的這種互動是一對多的關係。發佈者不需要知道誰在使用它廣播的資訊,訂閱者也不需要知道訊息來自何處。
發佈/訂閱簡訊系統有哪些功能?
使用發佈-訂閱模式開發的應用程式具有獨立的應用程式和通訊邏輯。簡訊基礎設施解偶發佈者和訂閱者之間的訊息交付,並且非同步廣播到不同的訂閱者。
發佈/訂閱通訊系統具有以下主要功能。
推送交付
當訊息發佈到訊息主題時,發佈/訂閱簡訊立即推送非同步事件通知。訊息可用時,訂閱者會收到通知。
多交付協定
主題連線到多種類型的端點,例如訊息佇列、無伺服器函數、HTTP 伺服器和電子郵件地址。
散發
當一條訊息傳送到一個主題,然後複製並推送到多個端點時,就會發生這種情況。Fanout 提供非同步事件通知,從而可平行執行處理。
篩選
篩選功能可讓訂閱者建立訊息篩選政策。藉助篩選,他們只會收到其感興趣的通知,而不會收到發佈到該主題的每條訊息。
多工處理
在某些情況下,發佈者也可以是訂閱者。您可以多工處理訊息串流並建立以內部一致的方式連結在一起的系統。
發佈/訂閱簡訊有哪些優點?
發佈-訂閱模型支援事件驅動型架構,在一些現代應用程式中這是必需的架構。可以使用事件觸發解偶服務並在這些服務之間通訊。事件是狀態的變更或更新,就好像在購物車中放置的商品。
發佈/訂閱簡訊為建置依賴於即時事件的應用程式開發人員提供顯著優勢。我們在下面概述了其中一些優勢。
消除輪詢
訊息主題允許即時的、基於推送的交付,從而訊息消費者無需定期檢查或輪詢新資訊和更新。這可促進更快的回應時間並減少交付延遲,在不能容忍延遲的系統中,這些都是關鍵要素。
動態設定目標
發佈/訂閱模式可更輕鬆、更自然地發現服務,並且更不容易出錯。發佈者無需維護對等名冊以讓應用程式傳送訊息,而只需要將訊息發佈到主題。然後,任何感興趣的相關方都會讓其端點訂閱此主題並開始接收這些訊息。多個訂閱者會變更、升級或消失,而系統會動態調整。
解偶和獨立擴展
發佈/訂閱模型可讓軟體更加靈活。發佈者和訂閱者是解偶的,彼此獨立開展工作,這可讓您獨立開發和擴展它們。您可以決定在本月以一種方式處理訂單,然後在下個月以另一種方式處理訂單。新增或變更功能不會在整個系統中產生連鎖反應,因為發佈/訂閱模型可讓您靈活調整所有內容的協同工作方式。
簡化通訊
通訊和整合程式碼是最難編寫的程式碼之一。發佈-訂閱模型透過使用指向訊息主題的單個連線來移除所有點對點連線,從而降低複雜性。主題將管理訂閱以決定應將哪些訊息交付到哪些端點。更少的回呼會形成更鬆散的耦合,此外還可產生更容易維護和擴展的程式碼。
耐久性
發佈/訂閱簡訊服務通常透過在多個伺服器上儲存相同訊息的複本來提供非常高的持久性和至少一次交付保證。
安全性
訊息主題對嘗試發佈內容的應用程式進行身分驗證,同時可讓您使用加密端點來保護通過網路傳輸的訊息。
發佈/訂閱簡訊有哪些使用案例?
下面概述發佈-訂閱簡訊系統的流行使用案例。
執行平行非同步處理
發佈到訊息主題的事件可以觸發多個工作者同時執行必要但不相關的任務。
交付應用程式和系統提醒
立即向受影響的應用程式元件和使用者提供關鍵更新和非同步事件通知。
管理非同步工作流程
在應用程式之間轉送事件、在資料存放區之間移動資料、重新整理分散式快取或更新業務系統中的記錄。
平衡工作負載
批量處理任務,或將一個較大的任務分解成許多較小的任務,並使用訊息佇列將工作分配給多個工作者。
記錄到多個系統
記錄事件以供日後分析,擷取營運和安全性日誌,或者封存以符合備份或合規要求。
使用散發進行複寫
在生產和開發環境之間複寫資料,或者使用即時資料進行開發和測試。
協調無伺服器應用程式
向分散式函數和訊息佇列散發非同步事件通知,以協調無伺服器應用程式的元件。
串流 IoT 資料
發佈/訂閱模式是物聯網 (IoT) 裝置互動的一種非常強大的方式。裝置可以輕鬆地將資料串流到後端系統或相互傳輸。
AWS 如何支援您的發佈/訂閱簡訊要求?
Amazon Web Services (AWS) 提供兩種服務,可用於不同的發佈-訂閱應用程式。
發佈/訂閱 API
AWS AppSync 是一項完全受管的服務,用於建立可簡化應用程式開發的無伺服器 GraphQL 和發佈/訂閱 API。可以建立單個端點來安全地查詢、更新或發佈資料。
使用 AWS AppSync 建置的發佈/訂閱 API,您就能夠透過無伺服器 WebSocket 連線,向訂閱的 API 用戶端發佈即時資料更新。可以為各種使用案例營造引人入勝的即時體驗。例如,您可以提供最新的比賽比分、財務資料、觀眾參與、投票,或者地圖和推送通知行銷等位置感知功能。
以下是可以使用 AWS AppSync 完成的一些任務:
- 透過單個網路請求,存取來自一個或多個來源或微型服務的資料
- 透過離線資料同步、版本控制和衝突解決,與資料互動和更新資料,甚至離線操作
- 只需為您的 API 請求和傳遞給連線用戶端的任何即時訊息付費
發佈/訂閱簡訊
Amazon Simple Notification Service (SNS) 可讓您使用發佈/訂閱簡訊模型輕鬆建置應用程式。可以採用可擴展且經濟高效的方式從應用程式向客戶或其他應用程式傳送訊息。
Amazon SNS 提供以下功能:
- 分散式系統之間、微型服務之間、事件驅動型無伺服器應用程式之間的高輸送量、推送型、多對多簡訊
- 訊息加密和流量隱私
- 跨 AWS 類別散發功能,例如分析、運算、容器、資料庫、物聯網 (IoT)、機器學習 (ML)、安全和儲存
立即建立免費的 AWS 帳戶,開始使用 AWS 上的發佈/訂閱。