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

Cosmos DB
流量管理員

解決方案構想

如果您想要瞭解如何使用詳細資訊來擴充本文,例如可能的使用案例、替代服務、實行考慮或定價指引,請讓我們知道 GitHub 的意見反應!

使用 Microsoft 全球資料中心內建的高可用性和低延遲功能,保證全球各地使用者的存取權。

架構

架構圖
下載此架構的 SVG 版本。

資料流程

  1. 使用者透過專用用戶端存取應用程式。
  2. Azure 流量管理員會根據單一或嵌套的路由設定檔,將使用者的連接路由至最佳位置,以存取應用程式。
  3. 在主控應用程式的進入區域中,應用程式會處理會話和資料庫的連接。
  4. 此應用程式的範圍可以從簡單的靜態頁面往上,直到裝載于 Kubernetes 的微服務導向應用程式實例為止。
  5. 應用程式環境與 Cosmos DB 之間的連線是透過 Azure Active Directory 使用者來處理,而該使用者可以在 Key Vault 中挑選 Cosmos DB 的金鑰。
  6. 藉由使用 Azure Cosmos DB 多路連接 api,您的應用程式會知道最接近的區域,而且可以將要求傳送至該區域。 識別最靠近的區域不會變更任何組態。 當您在 Azure Cosmos 帳戶中新增及移除區域時,您的應用程式不需要重新部署或暫停,它隨時都能持續保持高可用性。 在幕後,Cosmos DB 將會根據定義的區域數目,處理資料的全域散發和複寫。 此外,您也應該受益于自動容錯移轉選項,以容錯移轉至具有最高容錯移轉優先順序的區域,而且區域無法使用時,不會有使用者動作。 自動容錯移轉啟用時,可以修改區域的優先順序。

單元

  • Azure 流量管理員:為您的應用程式建立以 dns 為基礎的負載平衡/路由選項,其具有六種以 dns 為基礎的流量路由選項,可進行嵌套。
  • Azure Active Directory:同步處理內部部署目錄並啟用單一登入。
  • Azure Cosmos DB:適用于任何規模的全域散發多模型資料庫。

計算選項

  • Azure 虛擬機器:在幾秒鐘內建立 Linux 和 Windows 虛擬機器 (vm) ,以降低成本。
  • Azure Kubernetes Services:適用于所有應用程式和微服務基礎工作負載的高度可用、安全且完全受控的 Kubernetes 服務。
  • App Service:為 web 和行動裝置快速建立強大的雲端應用程式。

無伺服器選項

考量

可用性

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

當您考慮上述方法時,如果您在 Azure Cosmos DB 自動容錯移轉時達到高可用性,您將會設定解決方案,讓執行中的應用程式保持在最高可能提供的 SLA。

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

效能

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

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

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

災害復原

為了提高復原能力,您可以使用可用性區域來進行 Azure Cosmos DB 部署。 復原也取決於您在 Cosmos DB 部署上所做的一致性層級選擇。 根據此一致性層級,您將達成不同的復原層級 (如需詳細資訊) ,請參閱 一致性、可用性和效能權衡取捨

延展性

調整是以這個圖表中的許多層級為基礎。 Azure Cosmos DB 就是專門為彈性化規模和可預測效能而建置。 在應用程式的層級上,您需要查看使用的計算模型。 Azure Functions 和 App Service 可以自動調整。 針對 Azure 虛擬機器,您可以使用 Azure 虛擬機器擴展集。 當您瞭解這項需求時,應該一律考慮使用無伺服器選項(可能的話)。

安全性

從安全性的觀點來看,磁片磁碟機是以身分識別為基礎的系統,其中 Azure Active Directory 可以用來保護對環境的存取。 在後端中,應用程式會透過受控識別所存取的最佳設計) 來 (,但您也可以考慮使用 Azure Active Directory 使用者和 Azure Key Vault 來保護存取的方法。 此外,Cosmos DB 的實例應該進一步保護,如此一來,唯一能夠讀取和寫入的實體就是部署至不同區域的各種後端。 您可以使用內建 防火牆將 IP 限制套用至帳戶。

注意

從2021年3月開始,我們現在也支援直接在 Cosmos DB SQL API 上 Azure Active Directory RBAC

下一步

深入瞭解 Azure Cosmos DB:

深入瞭解 Azure 流量管理員:

相關的解決方案構想:

相關的完整架構:

相關架構指引: