绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Azure Cosmos DB (四) 使用EF的SQL API 异地冗余
2022-04-14 16:03:16

一,引言

  上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发。同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移。今天我们启用 “异地冗余” 对账户异地冗余会自动将数据复制到与当前所在区域地理配对的区域。异地冗余可保证99.999%的可用性,甚至在遇到灾难时,也不例外。  接下来开始今天的分享。

--------------------我是分割线--------------------

二,正文

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.

安装完成之后, 添加 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 

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Azure Cosmos DB
创建时间:2022-04-14 14:09:01
Azure Cosmos DB
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~