Azure Cosmos DB (四) 使用EF的SQL API 異地冗余


一,引言

  上一篇文章中,我們介紹到使用了EF Core 與Cosmos DB SQL API 進行結合開發。同時,大家在開發過程中一定要記得EF Core 不支持Cosmos DB 的遷移。今天我們啟用 “異地冗余” 對賬戶異地冗余會自動將數據復制到與當前所在區域地理配對的區域。異地冗余可保證99.999%的可用性,甚至在遇到災難時,也不例外。  接下來開始今天的分享。

--------------------我是分割線--------------------

1,Azure Cosmos DB (一) 入門介紹

2,Azure Cosmos DB (二) SQL API 操作

3,Azure Cosmos DB (三) EF Core 操作CURD Demo

4,Azure Cosmos DB (四) 使用EF的SQL API 異地冗余

二,正文

1.啟用異地冗余

找到之前創建好的Azure CosmosDB,點擊 “Enable geo-redundancy” 來啟動異地冗余復制,點擊 “Enable” 按鈕

等待些許分鍾之后,我們可以看到啟動異地冗余成功,然后進行設置異地

接下來,點擊 “Settings=》Replicate data globally” 我們需要進行設置啟用多區域寫入

開啟多區域寫入,配置 “East Asia (東亞)”,“Southeast Asia (東南亞)”,“Korea South (韓國南)” 可讀,可寫。點擊 “Save” 進行保存,更新多個區域寫入操作。

 

2,創建 Application Insights

我們已經配置了異地冗余,應用程序調用到哪個區域的Azure CosmosDB?我們在應用程序中啟用了Application Insight

Resource Group 選擇創建一個新的:“Web_Test_ApplicationInsights_RG”

Name:“cnbateblogweb_applicationsights”
Region:“East Asia”

Resource Mode:“Classic”

點擊 “Review + create” 進行創建前的預校驗

 驗證通過后,點擊 “Create” 進行創建操作

3,配置應用程序數據庫實例首選項

 通過添加引用 Application Insight :Microsoft.ApplicationInsights.AspNetCore

 通過程序包管理控制台:

Install-Package Microsoft.ApplicationInsights.AspNetCore -Version 2.15.0

安裝完成之后, 添加 Application Insights 服務到服務集合中

services.AddApplicationInsightsTelemetry();

配置 appsettings 配置文件中的 InstrumentationKey 的值(如果不清楚 InstrumentationKey 在哪里的同學,可以參考哦的另外一篇關於Application Insights的文章)

"ApplicationInsights": {
    "InstrumentationKey": "XXXXX"
  }

重點,開啟了異地冗余之后,現在系統在數據庫實例上是隨機執行,我們需要配置Cosmos DB 數據庫實例首選位置。部署在東南亞的系統應該執行東南亞區域的數據庫,部署在韓國南的系統應該執行韓國南區域的數據庫。因為這些CosmosDB 的實例在地理位置上更為接近系統所部署的位置。

AddDbContext方法中配置首選區域

services.AddDbContext<UserContext>(options => options.UseCosmos(Appsettings.app("CosmosDB", "Endpoint"), Appsettings.app("CosmosDB", "Key"), Appsettings.app("CosmosDB", "DataBase"), cosmosOptionsAction => cosmosOptionsAction.Region(Appsettings.app("CosmosDB", "Region"))));

最后,在 appsettings 中配置當前系統默認所在區域

"CosmosDB": {
"Region": "East Asia"
}

OK,運行代碼,我們可以在Application Insights 的 “Application map” 中可以看到映射結果(這里,我將三個區域設置為首選項進行運行跑出來的結果)

Bingo, 今天的分享到此結束。*★,°*:.☆( ̄▽ ̄)/$:*.°★* 🎉🎉🎉🎉🎉🎉

三,結尾

  今天的內容關於啟用異地冗余,並且為數據庫選擇的多個區域執行讀取和寫入操作,同時啟用多個區域中數據庫的可用性,使得應用程序性能得以提高。最后通過 Application Map,可以看到在哪個數據庫實例上執行了查詢等一系列操作。

參考文章:Azure Cosmos DB

github:https://github.com/yunqian44/Azure.CosmosDB.git

作者:Allen 

版權:轉載請在文章明顯位置注明作者及出處。如發現錯誤,歡迎批評指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM