Azure 通知中樞的可靠性

Azure 通知中樞 協助你管理跨平台通知系統(PNS)的推播通知,例如 Apple Push Notification service(APN)、Firebase Cloud Messaging(FCM)以及 Windows 推播通知服務(WNS)。

當您使用 Azure 時, 可靠性是共同的責任。 Microsoft 提供一系列功能以支援韌性與復原。 您有責任瞭解這些功能在您使用的所有服務中如何運作,並選取符合業務目標和正常運作時間目標所需的功能。

本文說明如何讓通知中心具備對各種潛在中斷與問題的韌性,包括暫時性故障、可用性區域故障、區域性故障及服務維護。 同時也說明了備份與還原選項,以及通知中心服務等級協議(SLA)的關鍵資訊。

生產部署建議

對於生產工作負載,請遵循以下建議:

  • 請使用基本層級或標準層級,讓您的命名空間符合 SLA 的適用資格。

  • 在裝置應用程式中,盡量使用安裝而非註冊。

  • 使用 Microsoft 提供的 SDK 與通知中心互動。

  • 啟用區域備援。

  • 若要預防全區域的中斷,請啟用至另一個 Azure 區域的中繼資料災害復原。 規劃如何備份和還原裝置註冊與安裝。

可靠性架構概觀

Azure 通知中樞 是圍繞命名空間和通知中心組織的。 命名空間是一種管理邊界,包含一個或多個樞紐。 集線器代表應用程式的端點。 裝置會使用 註冊 或 安裝 來向這些端點註冊,而這兩者可讓服務將推播通知傳送至這些裝置。 欲了解更多資訊,請參閱 註冊管理。

通知中心會向平台通知系統(PNS)發送推送通知,例如蘋果推播通知服務(APN)和 Firebase 雲端訊息(FCM)。 端對端通知傳遞取決於通知中心的可用性及下游 PNS 提供者的行為。

為了建立可靠性規劃,區分通知中心管理的以下類型資料非常重要:

  • 元資料: 命名空間與樞紐配置,包括連線資訊與災難復原設定。
  • 註冊資料: 裝置註冊與安裝,將使用者與裝置映射到標籤與範本。

對瞬態故障的彈性

暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 暫時性錯誤會在短時間內自行修正。 請務必確保您的應用程式能妥善處理暫時性錯誤,通常透過重試受影響的請求來進行。

所有雲端託管應用程式在與任何雲端託管的 API、資料庫及其他元件通訊時,都應遵循 Azure 暫態故障處理指引。 如需相關資訊,請參閱處理瞬態故障的建議。

通知樞紐會自動處理連接PNS時發生的暫時性故障。 然而,當您的服務或使用者裝置與通知中心互動時,您仍需負責處理短暫故障。 短暫性故障可能發生在註冊操作、通知發送操作及管理操作期間。 請遵循下列指引:

  • 註冊與安裝: 你裝置上的應用程式應該會重試因暫時性錯誤而失敗的註冊和安裝操作。 Microsoft提供的SDK會自動處理重試。 若無法使用提供的 SDK,請使用指數輪詢和抖動實作重試邏輯,並盡可能讓註冊作業具等冪性。

    建立或更新安裝作業具備冪等性,因此您可以放心重試此作業。 如果可能,請使用安裝方式而非註冊。

  • 通知發送與管理操作:使用 Microsoft 提供的 SDK 發送推播通知並執行管理操作。 這些 SDK 在發生暫態故障時會自動重試。

    若無法使用提供的 SDK,請使用指數輪詢和抖動實作重試邏輯,並盡可能讓通知傳送作業具等冪性。

對可用性區域故障的抵抗力

可用性區域 是 Azure 區域內物理上獨立的資料中心群組。 當某個區域發生故障時,服務可以切換至其他剩餘的區域。

在支援可用性區域的區域,通知中心命名空間支援 區域冗餘 配置。 通知中心會自動啟用部分區域所有命名空間的區域冗餘。 啟用區域冗餘後,Microsoft 會將元資料與註冊資料複製至該區域所有可用區域。

圖示顯示一個區域冗餘的通知中心命名空間,該命名空間在一個區域內使用三個可用區域。

要求

  • 區域支援:

    通知中心會自動啟用以下區域所有命名空間的區域冗餘。 你無法在以下區域關閉區域冗餘:

    歐洲 中東 Africa 亞太地區
    法國中部 卡達中部 南非北部 中國北部 3
    義大利北部 南韓中部
    挪威東部
    波蘭中部
    瑞典中部
    瑞士北部

    在其他支援 Notification Hubs 且具有 可用性區域 的區域中,則可選擇區域備援。 你只能在建立命名空間時啟用它。

  • 分級支援: 你可以使用所有通知中心等級的可用區域。

Cost

區域冗餘會產生超出階級價格的額外費用。 更多資訊請參閱通知中心的價格。

設定可用性區域支援

  • 建立新的區域冗餘命名空間: 建立新區域冗餘命名空間的流程取決於你使用的區域:

    • 在通知中心自動啟用區域冗餘的地區,你不需要設定。

      Important

      在這些區域中,Notification Hubs 一律建立已啟用區域備援的命名空間,即使以程式碼為基礎的部署(例如 Bicep 檔案或 Azure Resource Manager 範本)指定區域備援已停用。

      如果你不想要區域冗餘命名空間,請在支援可選區域冗餘的區域建立。

    • 在可選擇區域備援的區域中,您只能在建立命名空間時啟用此功能。 想了解如何設置帶有區域冗餘的新命名空間,請參閱在 Azure 入口網站建立 Azure 通知集線。

  • 讓現有的命名空間區域變得多餘: 通知中心不支援現有命名空間的原地遷移至可用性區域支援。 你需要部署一個新的命名空間,並將你的註冊資料移到該命名空間。 請遵循「在 Azure 區域間移動資源」的指引,這同樣適用於你在同一區域部署新命名空間。

所有區域都狀況良好時的行為

本節說明在設定通知中心命名空間以實現區域冗餘時,所有區域皆可運作時,應有的預期情況。

  • 跨區作業: 通知中心透過區域內任一區域的基礎設施,自動分發並服務請求。

  • 跨區域資料複寫: 註冊資料與元資料皆同步複製於指定區域內所有區域。

區域失敗期間的行為

本節說明當您設定通知中心命名空間以進行區域冗餘時,若某個區域發生故障,會發生什麼情況。

  • 偵測與回應:Microsoft 偵測區域故障並管理區域內的故障轉移。 您不需要啟動容錯移轉。
  • 通知: Microsoft 不會在區域關閉時自動通知您。 不過,你可以使用 Azure 服務健康狀態 來了解服務整體健康狀況,包括任何區域故障,並且可以設定 Service Health 警示來通知你問題。
  • 作用中的要求:進行中的管理作業、裝置註冊以及傳送通知的新要求,可能會在容錯移轉期間失敗。 您的應用程式應依照 暫態故障處理指引重試失敗操作。

  • 預期資料遺失: 單一區域中斷時不會預期資料遺失,因為通知中心會同步複製命名空間、中樞的配置與註冊資料,跨越可用區域。

    這個複製不是備份。 在共同責任模式下,你負責備份註冊和安裝資料。 更多資訊請參見 備份與還原。

  • 預期的停機時間:在 Microsoft 重新導向流量時,可能會有短暫的服務中斷。 請遵循 暫態故障處理指引 ,為您的應用程式準備應對這些中斷。

  • 重新劃分: 該服務會自動將請求導向到健康區域。

區域復原

當受影響區域恢復時,你不需要採取任何行動。 Microsoft 還原並重新平衡通知中心的基礎設施,以使用已恢復的區域。

測試區域失敗

您無法直接觸發通知中樞區域容錯移轉。 若要測試工作負載的行為,請在非生產環境中針對重試、冪等性和相依性失敗執行復原能力測試。 你也可以使用 Azure Chaos Studio 來測試周邊的應用程式元件。

對區域範圍故障的復原能力

通知中心透過 跨區域複製命名空間元資料來提供元資料災難復原,但它不會複製裝置註冊資料。 此功能需要在區域故障期間人工介入,且您的通知中樞會有一段停機時間。

如果你需要減少故障轉移時的停機時間和人工介入,可以考慮使用 客製化的多區域解決方案。

由 Microsoft 管理的中繼資料異地災難復原

通知中樞支援 Microsoft 管理的中繼資料災害復原至次要 Azure 區域。 如果你的主要區域有配對區域,你可以選擇那個配對區域。 無論你主要區域的配對狀態如何,你也可以從 彈性恢復區域列表中選擇次要區域。 通知樞紐接著會複製命名空間的元資料,例如命名空間名稱、連線字串及其他關鍵資訊。

圖示顯示通知中心從主要區域到次要區域的元資料災難復原。

Important

元資料地理災難復原不會複製註冊資料。 若觸發災難復原情境,註冊與安裝資料可能會遺失。 你負責在恢復後,實作一個解決方案,在你的集線器中重新填充註冊資料。

Microsoft 負責宣布災難狀態並啟動故障轉移。 當這種情況發生時,Microsoft 會在次要區域建立一個新的命名空間。 由於它使用主要區域的元資料,應用程式可以透過現有的命名空間名稱、連接字串 和 hub 名稱連接該命名空間。

顯示從主要通知中樞區域容錯移轉至次要區域的圖表。

要求

  • 區域支援:在配對的 Azure 區域中,你的命名空間可以使用 Azure 配對區域作為次要區域。

    如果您的命名空間位於非配對區域,或您想將資料複製到其他區域,您可以選擇以下彈性恢復區域之一作為次要區域:

    美洲 歐洲 Africa 亞太地區
    巴西南部 北歐 南非北部 Australia East
    美國西部 2 東南亞
  • 分級支援: 所有通知中心層級皆提供元資料災難復原選項。

Cost

Notification Hubs 不會針對設定或使用中繼資料異地災害復原另外收費。 不過,你必須支付複製中繼資料所使用的跨區域頻寬費用。 有關價格細節,請參閱 頻寬定價 與 通知中心價格。

設定多區域支援

當所有區域都正常時的行為

本節說明當您將通知中樞命名空間設定為中繼資料異地災害復原,且主要與次要區域皆正常運作時,預期會發生的情況。

  • 跨區域作業: 主要區域可滿足所有請求。 次要區域不會處理請求,除非發生故障轉移。

  • 跨區域資料複寫: 元資料,如命名空間名稱、樞紐配置、連線字串及其他關鍵資訊,會以非同步方式跨區域複製。 註冊資料不會被複製。 你有責任定期匯出以維持備份。

區域失敗期間的行為

本節說明在您設定通知中樞命名空間以進行中繼資料異地災害復原,且主要區域發生中斷時會發生的狀況。

  • 偵測與回應:Microsoft 負責偵測區域故障並決定是否觸發故障轉移至已設定的次要區域。
  • Notification: Microsoft 不會自動通知你區域故障。 不過,你可以使用 Azure 服務健康狀態 來了解整體服務的健康狀況,包括任何區域故障,並且可以設定 服務健康警示 來通知你問題。
  • 作用中的要求: 當主要區域離線時,對該命名空間提出的進行中要求可能會失敗。 客戶端應在故障轉移完成後重新嘗試操作。

  • 預期資料遺失: 元資料會被保留。 註冊資料不會自動備份,但你可以自己備份。 欲了解更多資訊,請參閱「大量匯出及匯入 Azure 通知中樞 註冊」。 如果沒有,註冊資料在主要區域恢復前將無法取得。

  • 預期停機時間: Microsoft 需要一些時間來觸發中繼資料的故障轉移,之後故障轉移才會完成。 雖然時間可能有所不同,但通常需要數小時。

    備援完成後,你需負責還原所有註冊資料的備份。

  • 重新劃分: 故障轉移後,請求會路由到次要區域的命名空間,該命名空間使用主要區域複製的資料。 故障轉移完成後,用戶端會自動連接到次要區域的命名空間。

區域復原

如果主要區域已復原,則可能可以容錯移轉回主要區域中的主要命名空間。 主要命名空間會保留中斷前的註冊資料。 這將是一個手動流程,Microsoft 會與你溝通說明流程。

主區域恢復後,你需要:

  • 驗證你的命名空間及其資料的狀態。
  • 判斷是否要將次要區域的最新註冊資料變更同步回主要區域。

區域故障測試

您無法啟動異地複寫容錯移轉。 不過,你應該自行測試災難復原程序。 確認註冊資料有備份,且能將它們還原到新的命名空間。

客製化多區域韌性解決方案

Microsoft 管理的元資料地理災難復原只複製元資料。 這個功能可以將該中繼資料還原到次要命名空間,但你必須負責將裝置註冊資料匯入該命名空間,讓你的應用程式能繼續運作。 此方法需在災難發生時手動介入,並伴隨停機時間。

如果您的復原目標需要較少停機時間或人工介入,您可以實施客製化的主動-主動多區域解決方案。 事先將第二個通知中心命名空間部署到另一個 Azure 區域。

備註

本節提供設計此類解決方案的基本指引。 你負責設計、實作、測試、部署、容錯移轉及管理此解決方案。

  • 容錯移轉:由於第二個命名空間是可正常運作的資源,因此您可以實作可偵測區域發生失敗並切換至該命名空間的邏輯。

  • 同步: 為了讓第二個通知中心與主通知中心保持同步,請使用以下選項之一:

    • 針對安裝: 使用可同時在兩個通知中樞中建立及更新安裝的應用程式後端。 安裝允許你指定自己獨特的裝置識別碼,這支援這種複製情境。 欲了解更多資訊,請參閱 RedundantHub 範例。

    • 報名申請: 使用一個應用程式後端,定期從主通知中心匯出註冊作為備份,然後批量匯入次級通知中心。 欲了解更多資訊,請參閱「大量匯出及匯入 Azure 通知中樞 註冊」。

    或者,如果你沒有後端,可以設定應用程式在目標裝置啟動時,在兩個集線器上建立安裝。 這些裝置會在兩個通知中樞中建立新的註冊項目。 最終,次要通知中心會註冊所有活躍裝置。

  • 過期註冊與安裝: 次要通知中心可能有過期的註冊和安裝。 當推送至過期的控制代碼時,通知中樞會根據從 PNS 伺服器收到的回應,自動清除通知中樞上相關聯的註冊或安裝記錄。 你可以透過新增自訂邏輯,處理每次傳送的回饋,並移除過期的註冊和安裝,來清除你選擇的備份解決方案中的過期紀錄。

  • 未開啟的應用程式: 有一段時間,未開啟應用程式的裝置不會收到通知。

  • 費用: 如果你用自己的次要樞紐來保護註冊資料,該樞紐會產生正常的服務費用。 同樣地,如果你在次要區域部署其他 Azure 資源以支援復原,則需以正常服務費率付費。

備份與還原

通知中心並未提供任何內建的備份與還原功能,涵蓋你命名空間中儲存的所有資料。 你負責結合以下方法:

  • 使用基礎設施即程式碼(IaC),如 Bicep,來定義你的命名空間、樞紐和政策配置。 將這些定義存於原始碼控制中,以便必要時重新部署資源。
  • 透過匯出 Azure 通知中樞 的註冊資料批量備份你的裝置註冊資料。

匯出的註冊集可作為意外刪除或非預期變更後的復原點。 IaC 保留資源配置,但不保留裝置註冊資料。 欲了解更多冗餘與備份不同角色的資訊,請參見 冗餘、複製與備份。

服務維護的韌性

Microsoft 定期執行服務更新及其他維護。 Azure 平台自動處理這些活動,確保維護過程對您來說無縫且透明。 除非您收到透過 Azure 服務健康狀態 計畫維護 的通知,否則維護期間將不會有停機。

服務等級協定

Azure 服務的服務層級協議(SLA)描述了每項服務的預期可用性,以及您的解決方案必須符合的條件,以達成該可用性預期。 欲了解更多資訊,請參閱線上服務的服務等級協議。

對於通知樞紐,可用性 SLA 適用於使用 Basic 與 Standard 層級的命名空間。