Azure CosmosDB (5) 高可用性
《Windows Azure Platform 系列文章目录》
Azure Cosmos DB 透明地复制与您的Cosmos帐户关联的所有Azure区域中的数据。 Cosmos DB 对数据采用多层冗余,如下图所示:
1.CosmosDB容器中的数据已经水平分区
2.在每个区域中,每个分区受副本集的保护,该副本集中的大多数副本将复制并以持久方式提交所有写入内容。 副本分布在最多 10 到 20 个容错域中。
3.将复制所有区域中的每个分区。 每个区域包含某个 Cosmos 容器的所有数据分区,可接受写入并为读取提供服务。
如果 Cosmos 帐户分布在 N 个 Azure 区域之间,则所有数据至少有 N x 4 个副本。 除了在与 Cosmos 帐户关联的区域之间提供低延迟数据访问和缩放写入/读取吞吐量以外,部署更多的区域(N 值较高)还能提高可用性。
服务的可用性SLA保障
作为跨数据多个Azure数据中心的分布式数据库,Cosmos DB 提供综合性的 SLA,涵盖了吞吐量、99% 情况下的延迟、一致性和高可用性。 下表显示了 Cosmos DB 针对单区域和多区域帐户提供的高可用性保证。 为实现高可用性,请将 Cosmos 帐户配置为使用多个写入区域
操作类型 | 单区域 | 多区域 (单区域写入) | 多区域 (多区域写入) |
写入 | 99.99 | 99.99 | 99.999 |
读取 | 99.99 | 99.999 | 99.999 |
在实践中,Bounded Staleness,Session (会话一致性),Consistent prefix (一致性前缀)和最终一致性 (Eventual Consistency)的实际下入可用性明显高于发布的SLA。所有一致性级别的实际读取可用性明显高于发布的 SLA。
使用 Cosmos DB 在遇到区域性服务中断时提供高可用性
区域性服务中断并不少见,而 Azure Cosmos DB 可确保你的数据库始终可用。 下面根据 Cosmos 帐户配置详细汇总了 Cosmos DB 在服务中断期间的行为:
1.使用 Cosmos DB 时,在客户端确认写入操作之前,数据将由接受写入操作的区域中的副本仲裁持久提交
2.配置有多个写入区域的多区域帐户对于写入和读取都将具有高可用性。 区域性故障转移可在瞬间完成,不需要在应用程序中进行任何更改。
3.配置为使用单个写入区域的多区域帐户:在发生写入区域服务中断期间,这些帐户将保持很高的读取可用性。 但是,对于写入,必须在 Cosmos 帐户中“启用自动故障转移”,才能将受影响区域故障转移到关联的另一区域。 故障转移将按指定的区域优先级顺序进行。 最终,当受影响的区域重新联机时,将通过冲突源提供在服务中断期间保留在受影响写入区域中的未复制数据。 应用程序可以读取冲突源,根据应用程序特定的逻辑解决冲突,并相应地将更新后的数据写回 Cosmos 容器。 以前受影响的写入区域恢复后,它将自动用作读取区域。 可以调用手动故障转移,并将受影响的区域配置为写入区域。 可以使用 Azure CLI 或 Azure 门户执行手动故障转移。 在手动故障转移之前、期间或之后,没有数据丢失或可用性丢失。 应用程序仍然高度可用。
4.配置为使用单个写入区域的多区域帐户:在发生读取区域服务中断期间,这些帐户将保持很高的读写可用性。 受影响的区域将自动从写入区域断开连接,并标记为脱机。 Cosmos DB SDK 会将读取调用重定向到首选区域列表中的下一个可用区域。 如果首选区域列表中没有区域可用,则会自动让调用返回到当前的写入区域。 处理读取区域服务中断不需要对应用程序代码进行更改。 最终,当受影响区域重新联机时,以前受影响的读取区域将自动与当前写入区域同步,并再次可用于为读取请求提供服务。 后续的读取会重定向到恢复的区域,不需更改应用程序代码。 在故障转移和重新加入以前发生故障的区域期间,Cosmos DB 会持续遵循读取一致性保证。
5.发生区域性服务中断时,单区域帐户可能会失去可用性。 建议对 Cosmos 帐户至少设置两个区域(最好是至少设置两个写入区域),以确保始终保持高可用性。
6.即使在极其罕见的不幸事件中,发生了 Azure 区域永久无法恢复的情况,如果为多区域 Cosmos 帐户配置了默认的强一致性级别,也不可能丢失数据。 在写入区域永久无法恢复的情况下,对于配置了有限过期一致性的多区域 Cosmos 帐户,可能的数据丢失时间范围限于过期时间范围;对于会话、一致的前缀和最终一致性级别,可能的数据丢失时间范围限于最多五秒。
Azure CosmosDB (5) 高可用性的更多相关文章
- Azure CosmosDB (2) CosmosDB中的数据一致性
<Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...
- Azure CosmosDB (9) Unique Key Constraints
<Windows Azure Platform 系列文章目录> 在Azure Cosmos DB中,还支持Unique Key Constraints(唯一键约束). 我们可以在Azure ...
- Azure CosmosDB (8) 性能指标Request Unit-RU
<Windows Azure Platform 系列文章目录> 本次将介绍Cosmos DB的性能指标RU (Request Unit). 总的来说,我们设置的Azure CosmosDB ...
- Azure CosmosDB (7) 分区键Partition Key
<Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...
- Azure CosmosDB (6) 冲突类型和解决策略
<Windows Azure Platform 系列文章目录> 当我们为CosmosDB配置多个Azure Region写入,就需要考虑冲突类型和解决策略. 对于配置了多个写入区域的 Az ...
- Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡
<Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...
- Azure CosmosDB (3) 选择适当的一致性级别
<Windows Azure Platform 系列文章目录> 绝大部分的商业分布式数据库,要求开发人员选择两个极端的数据库一致性:强一致性(Strong Consistency)和最终一 ...
- Azure CosmosDB (1) 概述
<Windows Azure Platform 系列文章目录> Azure CosmosDB是一个全球分布式数据库服务(Global Distributed Database),提供低延迟 ...
- Azure CosmosDB (14) 使用Postman访问CosmosDB REST API
<Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...
随机推荐
- red hat下Oracle服务自启动的方法
setup .rc.local 和chkconfig三种方式都可以设置 第一种)输入#setup指令进入系统服务菜单,选择你想启动的服务比如oralce,然后重起机器或者/etc/rc.d./init ...
- python网络编程(图片传输)
发送端: from socket import * s=socket() s.connect(('127.0.0.1',8888)) f=open('mm.jpg','rb') while True: ...
- 【原创】Arduino入门基础知识总结
一.概述 Arduino是源自意大利的一个开放源代码的硬件项目平台,该平台包括一块具备简单I/O功能的电路板以及一套程序开发环境软件. Arduino可以用来开发交互产品,比如它可以读取大量的开 ...
- WINDOWS7环境下Informatica的安装[新手]
环境: 操作系统:Windows7(64位): 数据库:Oracle 11g R2: 数据库字符集:UTF-8 一.下载: (参考链接:https://blog.csdn.net/u011031430 ...
- windows7安装dlib过程中遇到的问题总结以及运行实例效果
综合了无数网上记录过这个问题的文章,最后终于安装成功了! 首先有些文章说dlib从19.9版本起开始就不用cmake和boost的支持了,可能是我安装的dlib版本的问题?最后还是通过vs2015 + ...
- UITextField属性及方法说明
/初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(, , , )] //设置 ...
- MAC IDEA mybatis 逆向工程 无结果文件
mac下路径是./src windows 路径是.\src 解决方法,将\纠正过来即可
- Java 并发开发:Lock 框架详解
摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多 ...
- firefox浏览器,主动出现hao123的解决办法
听说火狐浏览器前端开发很好用,今天下载了一个体验了一下觉得还是很不错的.但是有个问题!!!为什么我设置了启动时打开空白页没用,它每次都会给我打开 https://www.hao123.com/ hao ...
- docker ,docker与虚拟机的区别
什么是Docker: 1.Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 L ...