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

时间:2022-08-19 00:22:17

一,引言

  上一篇文章中,我们介绍到使用了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” 按钮

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

等待些许分钟之后,我们可以看到启动异地冗余成功,然后进行设置异地

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

接下来,点击 “Settings=》Replicate data globally” 我们需要进行设置启用多区域写入

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

开启多区域写入,配置 “East Asia (东亚)”,“Southeast Asia (东南亚)”,“Korea South (韩国南)” 可读,可写。点击 “Save” 进行保存,更新多个区域写入操作。

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

2,创建 Application Insights

我们已经配置了异地冗余,应用程序调用到哪个区域的Azure CosmosDB?我们在应用程序中启用了Application Insight

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

Resource Group 选择创建一个新的:“Web_Test_ApplicationInsights_RG”

Name:“cnbateblogweb_applicationsights”
Region:“East Asia”

Resource Mode:“Classic”

点击 “Review + create” 进行创建前的预校验

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

验证通过后,点击 “Create” 进行创建操作

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

3,配置应用程序数据库实例首选项

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

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

通过程序包管理控制台:

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” 中可以看到映射结果(这里,我将三个区域设置为首选项进行运行跑出来的结果)

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

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

三,结尾

  今天的内容关于启用异地冗余,并且为数据库选择的多个区域执行读取和写入操作,同时启用多个区域中数据库的可用性,使得应用程序性能得以提高。最后通过 Application Map,可以看到在哪个数据库实例上执行了查询等一系列操作。

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

作者:Allen

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

Azure Cosmos DB (四) 使用EF的SQL API 异地冗余的更多相关文章

  1. Azure Cosmos DB &lpar;五&rpar; &period;Net Core 控制台应用

    一,引言 之前在讲Azure CosmosDB Core(SQL)核心的时候,使用了EF Core 的方式,引用了 "Microsoft.EntityFrameworkCore.Cosmos ...

  2. Azure Cosmos DB &lpar;二&rpar; SQL API 操作

    一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...

  3. Azure Cosmos DB &lpar;三&rpar; EF Core 操作CURD

    一,引言 接着上一篇使用 EF Core 操作 Azure CosmosDB 生成种子数据,今天我们完成通过 EF Core 实现CRUD一系列功能.EF Core 3.0 提供了CosmosDB 数 ...

  4. Azure CosmosDB &lpar;10&rpar; Azure Cosmos DB体系结构

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...

  5. Azure Cosmos DB 使用费用参考

    之前在学习Cosmos DB 中SQL API(DocumentDB) 的时候,也就是之前做的一些笔记,看到有使用费用的一些介绍,就有兴趣的去了解了下,做了一下简单的总结. 想了解更多或是购买使用的还 ...

  6. Azure Cosmos DB介绍及演示

    Azure Cosmos DB 是 Microsoft 提供的全球分布式多模型数据库服务.Cosmos DB是一种NoSql数据库,但是它兼容多种API.它支持SQL, MongoDB.Cassand ...

  7. Azure Cosmos DB &lpar;一&rpar; 入门介绍

    一,引言 今天是国庆.中秋双节房价的第三天,今天抽时间分享一篇关于使用Azure 提供的一项NoSql 服务-----Azure Cosmos DB.就有人问了,我听说过 MongoDB.Redis ...

  8. azure cosmos db &lpar;mongo DB&rpar;

    使用.net mongo的操作类操作azure(微软云)cosmosdb时,发现在做delete的操作的时候可以传一个文档对象,但是最后这个文档会解析成具体的sql语句,而当文档特别大时这样就出先了转 ...

  9. Azure CosmosDB &lpar;12&rpar; 创建Cosmos DB并执行查询语句

    <Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...

随机推荐

  1. VS2010添加类失败问题&comma;弹出错误框&comma;提示 CodeModel操作失败,无法访问标记数据库

    我在使用VS2010添加类的时候,会弹出一个错误框,提示 CodeModel操作失败,可以无法访问标记数据库 英文版是 CodeModel operation failed,Possibly cann ...

  2. Eclipse启动Tomcat时45秒超时的解决方法

    Eclipse启动Tomcat时,默认配置的启动超时时长为45秒.假若项目需要加载的东西比较多,启动时间会比较久,如果启动超过45秒将会报错.有两种解决途径,方法只有一个,就是修改启动时间. 1. 修 ...

  3. ACM - ICPC World Finals 2013 B Hey&comma; Better Bettor

    原题下载:http://icpc.baylor.edu/download/worldfinals/problems/icpc2013.pdf 这题真心的麻烦……程序不长但是推导过程比较复杂,不太好想 ...

  4. GCC单独编译host&sol;examples&sol; tx&lowbar;waveforms&period;cpp

    1.编译 须要链接uhd库和boost_program_options库以及boost_thread库: g++ tx_waveforms.cpp -o a -luhd -lboost_program ...

  5. Cookie 路径在本机测试及服务器部署,在浏览器处理方式上的不同

    Table of Contents 1 问题场景 2 解决过程 2.1 cookie是否设置成功 2.2 cookie是否上传到服务器 3 总结 1 问题场景 最近在学用Python进行web开发,写 ...

  6. Tomcat&lpar;五&rpar;:nginx&sol;httpd &plus; tomcat及负载均衡tomcat

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  7. MySQL存储过程中的事务执行失败之后获取错误信息

    1.表结构: 2. 存储过程中: 代码如下: BEGINDECLARE CONTINUE HANDLER FOR SQLEXCEPTIONBEGINROLLBACK;GET DIAGNOSTICS C ...

  8. PS笔刷的使用002

    001设置好的页面如下: 开始002的小记 1.这一套笔刷最常用的五个笔刷: 下面画一个例图 2.画画时候分好图层很重要,把要画的图片一个图层,画纸一个图层,和一个灰色图层,灰色图层使你不会画的超过画 ...

  9. Netty 系列一(核心组件和实例)&period;

    一.概念 早期的 Java API 只支持由本地系统套接字库提供所谓的阻塞函数来支持网络编程.由于是阻塞 I/O ,要管理多个并发客户端,需要为每个新的客户端Socket 创建一个 Thread .这 ...

  10. angular--解决angular图片加载失败问题

    基于angular4写的一个指令,在ionic3.x项目在用.因为加载图片超时等原因导致图片显示不出来,需要替换成默认或者指定图片 1.err-src.ts import { Directive,In ...