編輯

共用方式為


具有數據表記憶體故障轉移的兩個區域 Web 應用程式

Azure Front Door
Azure App Service
Azure Functions
Azure 表格儲存體
Azure Cache for Redis

解決方案構想

本文說明解決方案概念。 您的雲端架構師可以使用本指南,協助視覺化此架構的一般實作的主要元件。 以本文為起點,設計符合您工作負載具體要求的完善解決方案。

此架構為使用大量數據的 Web 應用程式提供高可用性解決方案。 次要區域可作為主要區域的待命,以改善可用性。 主要區域會使用 Azure 儲存體的內建複寫功能,將其數據傳送至次要區域。

數據會儲存在 Azure 資料表記憶體數據表中。 如同任何 Azure 儲存體 服務,數據表記憶體數據會在主要區域中同步復寫三次。 若要讓它可供待命使用,它也會在次要區域中以異步方式複寫三次。 如需 Azure 儲存體 複寫的相關信息,請參閱 Azure 儲存體 備援

架構包含數據表的快取,以減少存取負載並改善應用程式回應。

注意

在某些情況下,您的應用程式可能需要多個記憶體帳戶。 如需詳細資訊,請參閱 考慮

潛在使用案例

此架構可能適用於任何使用必須一律可用的大量數據的應用程式。 範例包括下列應用程式:

  • 追蹤客戶消費習慣和購物行為。
  • 預測天氣。
  • 提供智慧流量系統或實作智慧流量系統,或使用智慧技術來監視流量。
  • 分析製造物聯網 (IoT) 數據。
  • 顯示智慧型手機資料或使用智慧型技術來監視計量數據。

架構

可故障轉移至待命區域的復原系統架構。

下載此架構的 Visio 檔案

資料流程

  1. 用戶端會使用 Microsoft Entra 識別碼進行驗證,並獲授與裝載於 Azure App 服務 上的 Web 應用程式的存取權。
  2. Azure Front Door 是防火牆和第 7 層負載平衡器,會在發生區域性中斷時,將使用者流量切換至待命區域。
  3. Azure App 服務 裝載網站和 RESTful Web API。 瀏覽器用戶端會執行使用 API 的 AJAX 應用程式。
  4. Web API 委派函式應用程式來處理背景工作。 工作會排入 Azure 佇列記憶體佇列。
  5. Azure Functions 所裝載的函式應用程式會執行由佇列訊息觸發的背景工作。
  6. Azure Cache for Redis 會快取函式應用程式的數據表數據。 這會卸除資料庫活動,並加速函式應用程式和 Web 應用程式。
  7. Azure 表格記憶體會保存 Web 應用程式所使用的資料。
  8. 數據表記憶體支援跨區域中可用性區域的數據同步複寫,以減輕數據中心中斷。 它也會使用異步復寫來復寫不同 Azure 區域的數據,以補救區域中斷並改善應用程式可用性。

元件

  • Microsoft Entra ID 是可與內部部署目錄同步的多租使用者身分識別和存取管理服務。
  • Azure DNS 是 DNS 網域的高可用性裝載服務,可為應用程式提供快速 DNS 查詢和 DNS 記錄的快速更新。 管理 Azure DNS 就像管理其他 Azure 服務,並使用相同的認證、API、工具和計費。
  • Azure Front Door 是具有立即故障轉移的安全內容傳遞網路 (CDN) 和負載平衡器。 它會在接近使用者的邊緣運作,加速內容傳遞,同時保護應用程式、API 和網站免於網路威脅。
  • Azure App 服務 是完全受控的服務,可用於建置、部署及調整 Web 應用程式。 您可以使用 .NET、.NET Core、Node.js、Java、Python 或 PHP 建置應用程式。 應用程式可以在容器中或在 Windows 或 Linux 上執行。 在大型主機移轉中,前端畫面或Web介面可以編碼為 HTTP 型 REST API。 它們可以隔離,而且可以無狀態來協調微服務型系統。 如需 Web API 的詳細資訊,請參閱 RESTful Web API 設計
  • Azure Functions 提供一個環境,可用來執行稱為函式的小型程序代碼,而不需要建立應用程式基礎結構。 您可以使用它來處理大量數據、整合系統、使用IoT,以及建置簡單的API和微服務。 使用微服務,您可以建立連線至 Azure 服務且一律為最新狀態的伺服器。
  • Azure 儲存體是一套適用於資料、應用程式和工作負載的大規模擴展且安全性高的雲端服務。 該服務包括 Azure FilesAzure 表儲存體Azure 佇列儲存體。 Azure 檔案儲存體 通常是移轉大型主機工作負載的有效工具。
  • Azure 佇列記憶體 為大型工作負載提供簡單、符合成本效益且持久的訊息佇列。
  • Azure 資料表記憶體 是 NoSQL 索引鍵/值存放區,可用於快速開發,其使用大量半結構化數據集。 數據表是無架構的,而且會隨著需求變更而隨時調整。 對於許多類型的應用程式來說,存取是快速且符合成本效益的,而且通常成本低於其他類型的密鑰記憶體。
  • Azure Cache for Redis 是完全受控的記憶體內部快取服務和訊息代理程式,可用於在計算資源之間共用數據和狀態。 它同時包含開放原始碼 Redis 和 Redis Labs 的商業產品作為受控服務。 您可以藉由設計高輸送量在線事務處理應用程式,藉此改善高輸送量在線事務處理應用程式的效能,並利用記憶體內部數據存放區,例如 Azure Cache for Redis。

替代項目

  • Azure 流量管理員 會根據您選擇的流量路由方法,將傳入 DNS 要求導向到全球 Azure 區域。 它也提供自動故障轉移和效能路由。
  • Azure 內容傳遞網路 快取邊緣伺服器中的靜態內容以進行快速回應,並使用網路優化來加快動態內容的回應。 當使用者基底是全域時,內容傳遞網路 特別有用。
  • Azure Container Apps 是完全受控、無伺服器容器服務,可用來大規模建置及部署新式應用程式。
  • Azure Kubernetes Service (AKS) 是完全受控 Kubernetes 服務,可用來部署和管理容器化應用程式。 您可以使用它來實作微服務架構,其元件會視需要獨立調整。
  • Azure 容器執行個體 提供快速且簡單的方法來執行工作,而不需要管理基礎結構。 在開發期間,或用於執行未排程的工作。
  • Azure 服務匯流排 是一種可靠的雲端傳訊服務,可用於簡單的混合式整合。 此架構中可以使用它,而不是佇列記憶體。 如需詳細資訊,請參閱記憶體佇列 服務匯流排 - 比較和對比

考量

  • 新增記憶體帳戶可以克服數據表記憶體的效能限制。 下列情況可能需要額外的帳戶:

    • 實作多租用戶以支援多個客戶
    • 支援交易率較高的客戶
    • 支援具有大型數據集的客戶
    • 將數據分散到多個記憶體帳戶,以加速數據存取
    • 將數據隔離成經常性存取層、非經常性存取層和封存層
    • 為備份和報告目的製作數據複本

    如需詳細資訊,請參閱 表格記憶體的延展性和效能目標。

  • 數據表記憶體復寫不適用於某些 Azure 區域。

  • 次要區域中的數據具有最終一致性,這表示在主要區域中發生更新的時間與次要區域中看到更新的時間之間會有延遲。 由於從主要區域復寫到次要區域是異步的,因此如果主要區域失敗且無法復原,可能會遺失數據。 目前沒有服務等級協定(SLA),說明將數據復寫至次要區域所需的時間。 如需更多資訊,請參閱 Azure 儲存體備援

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

  • Nabil Siddiqui |雲端解決方案架構師 - 數位與應用程式創新

下一步