Azure Web PubSub 中的異地複寫
任務關鍵性應用程式通常需要有強固的容錯移轉系統,並為使用者提供更靠近他們所在位置的服務。 在異地複寫功能發佈之前,開發人員需要部署多個 Web PubSub 資源,並撰寫自訂程式碼來協調跨資源的通訊。 現在,透過 Azure 入口網站進行快速設定,您可以輕易啟用此功能。
使用異地複寫的優點
- 對區域性中斷更具復原性: 如果發生區域性中斷情況,用戶端會自動路由至良好的複本。
- 跨區域通訊: 開發人員可以照常使用已啟用異地複寫的資源,即使幕後有多項資源也一樣。 該服務會處理跨複本的通訊。
- 增強的網路速度: 異地分散的用戶端會連線到最近的複本。 這些複本會透過 Azure 全球網路骨幹進行通訊,確保網路快速且穩定。
- 容易管理。 所有複本都會共用主要 Web PubSub 資源的設定。
必要條件
- 進階層級中的 Web PubSub 資源。
使用案例範例
Contoso,一家社交媒體公司
Contoso 是一家社交媒體公司,其客戶群遍佈美國和加拿大。 Contoso 為其使用者提供行動和 Web 應用程式,以便他們可以相互聯繫。 Contoso 應用程式部署在美國中部。 作為 Contoso 架構的一部分,Web PubSub 會用於在用戶端應用程式與應用程式伺服器之間建立持續性的 WebSocket 連線。 Contoso 喜歡他們可以將 WebSocket 連線的管理工作卸載到 Web PubSub,但不喜歡閱讀加拿大用戶遇到較高延遲的報告。 此外,Contoso 的開發小組也想要確保應用程式不會出現區域性中斷情況,以便使用者可以不間斷地存取應用程式。
Contoso 可以在加拿大中部建立另一個 Web PubSub 資源,該資源在地理位置上更靠近加拿大的使用者。 不過,管理多個 Web PubSub 資源會帶來一些挑戰:
- 需要實施跨區域通訊機制,以便加拿大和美國的使用者可以彼此互動。
- 開發小組需要管理兩個個別的 Web PubSub 資源,每個資源都有不同的網域和連接字串。
- 如果發生區域性中斷情況,則必須將流量導向至可用的資源。
所有上述這些都佔用了工程資源,使其無法專注於產品創新。
利用異地複寫功能
透過異地複寫功能,Contoso 現在可以在加拿大中部建立複本,有效地克服上述挑戰。 開發人員小組很高興發現他們不需要進行任何的程式碼變更。 只需在 Azure 入口網站上按一下幾個按鈕即可輕易完成。 開發人員小組也很高興與專案關係人分享,由於 Contoso 計劃進入歐洲市場,因此他們只需要在歐洲新增另一個複本。
如何在 Web PubSub 資源中啟用異地複寫
若要在 Azure 區域中建立複本,請在 Azure 入口網站上移至您的 Web PubSub 資源並尋找 [複本] 刀鋒視窗,然後按一下 [新增] 以建立複本。
建立之後,您可以按一下該複本名稱以在入口網站上檢視/編輯您的複本。
注意
- 復本計數目前限制為每個主要資源最多8個。
定價和資源單位
每個複本都有自己的 unit
和 autoscale settings
。
複本是 Azure Web PubSub 服務的進階層級的功能。 每個複本都會根據自己的單位和輸出流量個別計費。 免費的訊息配額也會個別計算。
在上述範例中,Contoso 已在加拿大中部新增了一個複本。 Contoso 會根據複本在 Premium 價格中的單位和訊息來支付加拿大中部的複本費用。
會針對跨區域輸出流量來收取輸出費用。 如果訊息跨複本傳輸並在傳輸後成功傳送至用戶端或伺服器,則該訊息會按輸出訊息計費。
刪除複本
建立 Web PubSub 資源的複本之後,如果不再需要,您可以隨時刪除它。
若要在 Azure 入口網站中刪除複本:
- 導覽至您的 Web PubSub 資源,然後選取 [複本] 刀鋒視窗。 按一下您要刪除的複本。
- 按一下 [複本概觀] 刀鋒視窗上的 [刪除] 按鈕。
若要使用 Azure CLI 來刪除複本:
az webpubsub replica delete --replica-name MyReplica --name MyWebPubSub -g MyResourceGroup
了解異地複寫功能的運作方式
- 用戶端會解析 Web PubSub 服務的完整網域名稱 (FQDN)
contoso.webpubsub.azure.com
。 此 FQDN 會指向流量管理員,而該流量管理員會傳回最接近的區域 Web PubSub 執行個體的正式名稱 (CNAME)。 - 透過此 CNAME,用戶端會與區域執行個體 (複本) 建立一個 Websocket 連線。
- 兩個複本會彼此同步資料。 如有必要,傳送至一個複本的訊息會傳輸到其他複本。
- 如果複本未通過流量管理員 (TM) 所執行的健康情況檢查,則 TM 會從其網域解析結果中排除失敗執行個體的端點。 如需詳細資料,請參閱下面的復原和災害復原
注意
- 在資料平面中,主要 Azure Web PubSub 資源的運作方式與其複本相同
復原和災害復原
Azure Web PubSub 服務會利用流量管理員來對其複本進行健康情況檢查和 DNS 解析。 在正常情況下,當所有複本都正常運作時,用戶端會被導向到最接近的複本。 例如:
- 靠近
eastus
的用戶端會被導向到位於eastus
的複本。 - 同樣地,靠近
westus
的用戶端會被導向到位於westus
的複本。
如果美國東部發生區域性中斷 (如下圖所示),則流量管理員會偵測到該區域的健康情況檢查失敗。 然後,此失效複本的 DNS 會從流量管理員的 DNS 解析結果中排除。 在 DNS 存留時間 (TTL) 持續時間 (設定為 90 秒) 之後,eastus
的用戶端會被重新導向來與 westus
的複本連線。
一旦 eastus
的問題被解決且該區域重新上線之後,健康情況檢查就會成功。 然後,eastus
的用戶端會再次被導向到其所在區域的複本。 此轉換是平順的,因為在關閉現有的連線之前,連線的用戶端都不會受到影響。
此容錯移轉和復原程序是自動的,不需要手動介入。
停用或啟用複本端點
設定複本時,您可以選擇啟用或停用其端點。 如果停用,則主要 FQDN 的 DNS 解析不會包含複本,因此不會將流量導向至該複本。
您也可以在建立端點之後啟用或停用該端點。 在主要資源的 [複本] 刀鋒視窗上,按一下複本右側的省略符號按鈕,然後選擇 [啟用端點] 或 [停用端點]:
刪除複寫之前,請考慮先停用其端點。 一段時間之後,現有的連線都將中斷。 由於沒有新的連線到來,因此複寫最後會變成閑置的狀態。 這可確保順暢的刪除過程。
此功能對於解決區域問題也很有幫助。
注意
- 由於 DNS 快取的原因,因此 DNS 更新可能需要幾分鐘才會生效。
- 現有的連線在中斷之前不會受到影響。
啟用異地複寫功能後對效能的影響
啟用複本之後,用戶端自然會根據其地理位置進行分散。 雖然 Web PubSub 會負責在這些複本之間進行資料同步,但您會很高興地知道,對於最常見的使用案例,伺服器負載的相關額外負荷是最小的。
具體而言,如果您的應用程式通常是向較大的群組 (大小 > 10) 或單一連線進行訊息廣播,則對同步效能的影響幾乎可以忽略不計。 如果您是向小型的群組 (大小 < 10) 傳送訊息,您可能會注意到同步的額外負荷稍多。
為了確保有效的容錯移轉管理作業,建議您設定每個複本的單位大小以處理所有的流量。 或者,您也可以啟用自動調整功能來管理這項作業。
如需效能評估的相關資訊,請參閱效能。
非繼承和繼承的組態
復本會從主要資源繼承大部分組態;不過,某些設定必須直接在複本上設定。 以下是這些組態的清單:
- SKU:每個復本都有自己的 SKU 名稱和單位大小。 復本的自動調整規則必須根據其個別計量個別設定。
- 共用私人端點:雖然共用私人端點會自動復寫至複本,但目標私人鏈接資源需要個別核准。 若要新增或移除共用私人端點,請在主要資源上管理它們。 在已核准其共用私人端點之前,請勿 啟用複本。
- 記錄目的地設定。 如果未在複本上設定,則只會傳輸來自主要資源的記錄。
- 警示。
所有其他組態都會繼承自主要資源。 例如,存取金鑰、身分識別、應用程式防火牆、自定義網域、私人端點和訪問控制。