共用方式為


最小記憶體 – 要復寫數據的變更摘要

Azure Front Door
Azure App Service
Azure Functions
Azure Cosmos DB
Azure 資料表儲存體

本文提供一個高可用性解決方案,適用於處理需要在特定時間範圍內存取大量數據的 Web 應用程式。 解決方案牽涉到使用 Azure Cosmos DB 作為主要資料存放區,並使用 Azure Cosmos DB 變更摘要將數據復寫到低成本的次要記憶體。 當指定的時間週期到期時,會使用 Azure Functions 從 Azure Cosmos DB 刪除數據。 次要記憶體中的數據會保留較長的時間,以啟用其他解決方案以進行稽核和分析。 解決方案也會藉由將數據復寫至不同的數據服務,以提供高持久性。

架構

使用兩種類型的記憶體來降低成本的復原系統架構。

下載此架構的 Visio 檔案

資料流程

  1. 用戶端會使用 Microsoft Entra 識別碼進行驗證,並獲授與裝載於 Azure App 服務 上的 Web 應用程式的存取權。
  2. Azure Front Door 是防火牆和第 7 層負載平衡器,會在發生區域性中斷時,將使用者流量切換至待命區域。
  3. App Service 會裝載網站和 RESTful Web API。 瀏覽器客戶端會執行使用 API 的異步 JavaScript 和 XML (AJAX) 應用程式。
  4. Web API 會將責任委派給函式所裝載的程式代碼,以處理背景工作。 工作會排入 Azure 佇列記憶體佇列。
  5. 佇列訊息會觸發函式,以執行背景工作。
  6. Azure Cache for Redis 會快取函式的資料庫數據。 藉由使用快取,解決方案會卸除資料庫活動,並加速函式應用程式和 Web 應用程式。
  7. Azure Cosmos DB 會保存最近產生的數據。
  8. Azure Cosmos DB 會發出可用來復寫變更的變更摘要。
  9. 函式應用程式會讀取變更摘要,並將變更複寫至 Azure 資料表記憶體數據表。 另一個函式應用程式會定期從 Azure Cosmos DB 移除過期的數據。
  10. 數據表記憶體提供低成本的記憶體。

元件

  • Microsoft Entra ID 是一種身份和訪問管理服務,可以與本地目錄同步。 在此架構中,它會驗證使用者,並授與裝載於 App Service 上的 Web 應用程式的存取權。
  • Azure DNS 是網域名稱系統 (DNS) 網域的高可用性裝載服務。 在此架構中,Azure DNS 會針對透過 Azure Front Door 公開的 Web 應用程式提供 DNS 解析。
  • Azure Front Door 是安全的內容傳遞網路和負載平衡器。 在此架構中,它可以加速內容傳遞、提供容錯移轉功能,並保護應用程式免受網路威脅。
  • App Service 是完全受控的服務,用於建置、部署、裝載和調整 Web 應用程式。 您可以使用 .NET、.NET Core、Node.js、Java、Python 或 PHP 構建應用程式。 應用程式可以在容器中或在 Windows 或 Linux 上執行。 在大型主機移轉中,您可以將前端畫面或 Web 介面編碼為以 HTTP 為基礎的 REST API。 您可以將它們隔離並使其無狀態,以協調以微服務為基礎的系統。 如需 Web API 的詳細資訊,請參閱 RESTful Web API 設計。 在此架構中,App Service 會裝載應用程式的 Web 介面和 REST API。
  • Functions 提供了一個環境來運行稱為函數的小型程式碼片段,而無需建立應用程式基礎設施。 您可以使用它來處理大量數據、整合系統、使用物聯網 (IoT) 裝置,以及建置簡單的 API 和微服務。 使用微服務,您可以建立連線到 Azure 服務的伺服器,並一律保持最新狀態。 在此架構中,Functions 會處理背景工作,例如複製資料和刪除過期記錄。
  • Azure 儲存體是一套適用於資料、應用程式和工作負載的大規模擴展且安全性高的雲端服務。 它包括 Azure 檔案儲存體,可作為移轉大型主機工作負載的有效工具。
    • 佇列記憶體 為大型工作負載提供簡單、符合成本效益且持久的消息佇列。 此架構使用佇列儲存體進行作業傳訊。
    • 數據表記憶體 是 NoSQL 索引鍵/值存放區,可用於快速開發,其使用大量半結構化數據集。 數據表是無架構的,而且會隨著需求變更而隨時調整。 對於許多類型的應用程式來說,存取是快速且符合成本效益的,而且通常成本低於其他類型的密鑰記憶體。 此架構會使用資料表儲存體,將資料的同步處理和重組複本儲存在 Azure Cosmos DB 中。
  • Azure Cache for Redis 是完全受控的記憶體內部快取服務和訊息代理程式,可用於在計算資源之間共用數據和狀態。 它同時包含開放原始碼 Redis 和 Redis Labs 的商業產品作為受控服務。 您可以將高輸送量線上交易處理 (OLTP) 應用程式設計為調整,並利用記憶體內部資料存放區,例如 Azure Cache for Redis,以改善其效能。 在此架構中,適用於 Redis 的 Azure 快取會加速存取常用資料,進而改善函式應用程式和 Web 應用程式的效能。
  • Azure Cosmos DB 是全域分散式多模型資料庫,可讓您的解決方案在任意數目的地理區域中彈性且獨立地調整輸送量和儲存體。 它透過全面的服務等級協定 (SLA) 提供輸送量、延遲、可用性和一致性保證。 在此架構中,Azure Cosmos DB 會儲存最近的資料,並發出用來將更新複寫至資料表儲存體的變更摘要。

替代項目

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

案例詳細資料

此解決方案會使用 Azure Cosmos DB 來儲存 Web 應用程式所使用的大量數據。 處理大量數據的 Web 應用程式受益於 Azure Cosmos DB 彈性且獨立調整輸送量和記憶體的能力。

另一個主要解決方案元件是 Azure Cosmos DB 變更摘要。 對資料庫進行變更時,變更摘要數據流會傳送至事件驅動函式觸發程式。 然後,函式會執行並復寫數據表記憶體數據表的變更,以提供低成本的記憶體解決方案。

Web 應用程式只需要有限的時間數據。 解決方案會利用這個事實來進一步降低成本。 具體而言,另一個函式會定期執行並刪除 Azure Cosmos DB 的過期數據。 除了觸發之外,函式也可以排程在設定時間執行。

潛在使用案例

此架構適用於下列任何應用程式:

  • 使用大量數據。
  • 需要數據一律可供使用。
  • 使用過期的數據。

範例包括下列應用程式:

  • 透過實體位置的實時數據摘要和感測器,個人化客戶體驗並推動參與。
  • 追蹤客戶消費習慣和購物行為。
  • 收集車輛位置、效能和駕駛行為的數據,以提高效率和安全性,以追蹤車輛車隊。
  • 預測天氣。
  • 提供智慧流量系統或實作智慧流量系統,或使用智慧技術來監視流量。
  • 分析製造IoT數據。
  • 顯示智慧型手機資料或使用智慧型技術來監視計量數據。

考量

這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構

  • 當您實作和維護此解決方案時,會產生額外的成本。
  • 針對複寫使用變更摘要需要比在核心應用程式中執行複寫更少的程式代碼維護。
  • 您需要移轉現有的數據。 移轉程式需要臨機操作腳本或例程,才能將舊數據複製到記憶體帳戶。 當您移轉資料時,請確定您使用時間戳和複製旗標來追蹤移轉進度。
  • 若要避免從 Azure 資料表次要記憶體刪除專案,請忽略函式從 Azure Cosmos DB 刪除專案時所產生的刪除摘要。

參與者

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

主要作者:

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

下一步