一,引言

  上一篇文章中,我们介绍到使用了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,可以看到在哪个数据库实例上执行了查询等一系列操作。

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

作者:Allen

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

最新文章

  1. 成吨提高开发效率:Intellij Shortcuts精简子集与思维模式
  2. 更新证书错误:No matching provisioning profiles found
  3. 在ssh中利用Solr服务建立的界面化站内搜索---solr2
  4. 1D1D动态规划优化初步
  5. Retrofit所有知识场景汇总
  6. 关于linq
  7. bzoj1758
  8. MFC + CxImage 实现自绘半透明按钮
  9. Is it possible to run native sql with entity framework?
  10. 8、手把手教你Extjs5(八)自定义菜单2
  11. iOS多线程开发之GCD(中篇)
  12. Ubuntu 16.06 安装拼音输入法 设置双拼
  13. BZOJ 4129: Haruna’s Breakfast [树上莫队 分块]
  14. dedecms二次开发
  15. PHP 设置调试工具XDebug PHPStorm IDE
  16. CCF关于对NOIP2018复赛违规处罚的公告
  17. OpenGL模版小案例分析
  18. sql(Oracle)优化之索引
  19. autofac IOC
  20. [转]Extjs中的迭代方法

热门文章

  1. SpringBoot整合MongoDB(实现一个简单缓存)
  2. 面试官:讲讲Redis的五大数据类型?如何使用?(内含完整测试源码)
  3. get请求传递json格式数据的两种方法
  4. linux(centos)环境下安装rabbitMq
  5. 创建Vue项目及封装axios
  6. Python-in is == 区别
  7. Python练习题 047:Project Euler 020:阶乘结果各数字之和
  8. Python练习题 021:递归方法求阶乘
  9. Python练习题 002:奖金计算
  10. windows10 热点一直显示正在断开中