1. 程式人生 > >Azure Cosmos DB (四) 使用EF的SQL API 異地冗餘

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, 今天的分享到此結束。*★,°*:.☆( ̄▽ ̄)/$:*.°★*