使用 Azure Cosmos DB 的全域散發應用程式

Azure Cosmos DB
Azure 流量管理員

應用程式必須具有高度回應性,且一律會上線。 本文提供使用全域散發應用程式來滿足這些需求的解決方案。 它會利用 Azure Cosmos DB 和 Azure 全球資料中心內建的高可用性和低延遲功能。

架構

此架構圖表顯示 Azure 流量管理員如何將應用程式使用者路由至存取 Azure Cosmos DB 的最佳位置。

下載這個架構的 Visio 檔案

資料流程

  1. 使用者透過專用用戶端存取應用程式。
  2. Azure 流量管理員會使用路由設定檔或巢狀設定檔,將使用者的連線路由至存取應用程式的最佳位置。
  3. 在使用者路由至的區域中,應用程式會建立資料庫會話和連線。
  4. 解決方案可以容納各種複雜度的應用程式。 例如,應用程式可能是基本的靜態頁面。 或者,它可能是裝載在 Kubernetes 中的微服務導向應用程式。
  5. 應用程式環境與 Azure Cosmos DB 之間的連線是透過 Azure Active Directory (Azure AD) 從 Azure 金鑰保存庫 擷取 Azure Cosmos DB 金鑰的使用者來處理。
  6. 應用程式知道最接近的區域,而且可以使用 Azure Cosmos DB 多路連接 API 將要求傳送至該區域。 識別最靠近的區域不會變更任何組態。 當您在 Azure Cosmos DB 帳戶中新增和移除區域時,您的應用程式不需要重新部署或暫停。 應用程式可繼續保有高可用性。 在幕後,Azure Cosmos DB 會根據定義的區域數目來處理資料的全域散發和複寫。 如果已開啟自動容錯移轉選項,且區域變成無法使用,則系統會容錯移轉至具有最高容錯移轉優先順序的區域。 此容錯移轉不需要使用者動作。 開啟自動容錯移轉時,可以修改區域優先順序。

單元

  • 流量管理員:是 DNS 型流量負載平衡器。 您可以使用流量管理員,使用可巢狀化的各種 DNS 型流量路由選項,為您的應用程式建立負載平衡選項。
  • Azure AD:是多租使用者、雲端式身分識別和存取管理服務。 您可以使用 Azure AD 來同步處理內部部署目錄,並啟用單一登入。
  • Azure Cosmos DB 是全域散發的多模型資料庫,適用于任何規模。

替代方案

您可以使用數個計算和無伺服器選項來擴充此案例。

計算選項

  • Azure 虛擬機器是基礎結構即服務 (IaaS) 供應專案。 您可以使用虛擬機器來部署隨選、可調整的運算資源,例如 Linux 和 Windows 虛擬機器, (VM) 。
  • Azure Kubernetes Service (AKS) 是應用程式和微服務基底工作負載的高可用性、安全且完全受控的 Kubernetes 服務。
  • Azure App 服務提供架構,用於建置、部署及調整適用于 Web 和行動案例的強大雲端應用程式。

無伺服器選項

  • Azure Functions是事件驅動的無伺服器計算平臺。 透過 Functions,您可以在雲端大規模部署和操作,並使用觸發程式和系結來整合服務。
  • Azure Logic Apps 會將工作流程自動化。 透過這項服務,您可以快速建置功能強大的整合解決方案。

實例詳細資料

應用程式需要提供快速回應時間。 為了達到低延遲,組織會部署接近其使用者的應用程式。 他們也會將資料保持接近使用者。 當組織全域運作時,他們必須使用多個資料中心和全域散發的應用程式。 這些應用程式接著會使用全域複寫資料的本機複本,以維持高度回應。

此解決方案會使用全域散發的應用程式。 它也會使用 Azure Cosmos DB,這是一種全域分散式資料庫系統,可透明地將資料複寫至多個區域。 應用程式會使用資料庫的本機複本來讀取和寫入資料。

除了提供低延遲之外,解決方案也受益于 Azure Cosmos DB 所提供的高可用性。

潛在使用案例

此解決方案非常適合全球運作且需要將資料保持在其使用者附近的產業。 範例包括媒體、娛樂、旅遊和娛樂產業。 使用全域散發應用程式的一些案例包括:

  • 串流取用者視訊服務。
  • 適用于人員和貨物的應用程式型取貨和遞送服務。

考量

這些考慮會實作 Azure Well-Architected Framework 的要素,這是一組可用來改善工作負載品質的指引原則。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework

可靠性

可靠性可確保您的應用程式符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性要素概觀

Azure Cosmos DB 實例的可用性取決於許多因素。 Azure Cosmos DB 複寫到的區域數目越大,應用程式的可用性就越大。 每個區域都包含 Azure Cosmos DB 容器的所有資料分割,而且預設可提供讀取。 若要增加資料層的可用性,您可以啟用多區域寫入。 您也可以藉由採用較弱的一致性層級和可用性區域來增加可用性。

若要設定解決方案以最大化應用程式所提供的 SLA,請使用 Azure Cosmos DB 自動容錯移轉。

針對應用層,使用巢狀設定檔設定流量管理員。 將此設計推送至最高層級時,您可以調整每個區域的不同應用程式選擇。 每個區域部署也會採用高可用性方法。

如需更高的復原能力,您可以使用可用性區域進行 Azure Cosmos DB 部署。 復原也取決於您搭配 Azure Cosmos DB 部署使用的一致性層級。 如需詳細資訊,請參閱 一致性、可用性和效能取捨

安全性

安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性要素的概觀

從安全性觀點來看,請致力於以身分識別為基礎的系統,其中 Azure AD 可用來保護環境的存取。 在後端中,透過受控識別存取應用程式。 或者,請考慮使用 Azure AD 使用者和金鑰保存庫來保護存取。 Azure Cosmos DB 實例應進一步受到保護。 讓部署到不同區域的各種後端成為唯一能夠讀取和寫入資料庫實例的實體。 使用內建 防火牆將 IP 位址限制套用至帳戶。

Azure Cosmos DB 也支援使用 Azure AD 的角色型存取控制。 如需詳細資訊,請參閱 使用 Azure Cosmos DB 帳戶的 Azure Active Directory 設定角色型存取控制

效能效率

效能效率可讓您的工作負載進行調整,以有效率的方式符合使用者對其放置的需求。 如需詳細資訊,請參閱效能效率要件概觀

系統效能會受到計算和資料庫層級的許多因素影響。 App Service方案或其他計算選項的 SKU 會影響每個區域中可用的記憶體和核心。 此外,部署計算層的區域數目可以指定其能夠處理的縮放比例。 部署更多位置可減輕現有區域的壓力,並會導致線性增加應用程式所能滿足的最大輸送量。

設定 Azure Cosmos DB,使其不會成為計算層資源的瓶頸。 Azure Cosmos DB 中的每個資料庫和容器都應該設定為自動調整,且應提供最大要求單位值,以確保 Azure Cosmos DB 不會節流要求。 若要判斷 Azure Cosmos DB 實體的適當最大要求單位值,您可以執行接近應用程式最大輸送量的負載測試。 相較于其強式對應專案,較弱的一致性層級可提供更高的輸送量和效能優勢。

重要的是,在讀取和寫入 Azure Cosmos DB 的程式碼中實作邏輯時,無論是透過 SDK、Functions 系結等等, PreferredLocations 都應該使用 ,讓每個區域 API 將要求路由傳送至最接近的 Azure Cosmos DB 區域。 根據 Azure Cosmos DB 帳戶組態、目前的區域可用性和指定的喜好設定清單,SDK 會選擇最佳的端點來執行讀取和寫入作業。 此程式會產生顯著的效能提升。

調整是以此解決方案中的許多層級為基礎。 Azure Cosmos DB 就是專門為彈性化規模和可預測效能而建置。 在應用程式的層級上,您必須查看所使用的計算模型。 函式和App Service可以自動調整。 針對 Azure VM,您可以使用 Azure 虛擬機器擴展集。 當您知道此需求時,應該盡可能考慮無伺服器選項。

下一步

深入瞭解 Azure Cosmos DB:

深入瞭解流量管理員:

相關解決方案概念:

相關的完整架構:

相關的架構指引: