Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡
《Windows Azure Platform 系列文章目录》
我个人感觉,这个概念和分布式系统中的CAP原则是类似的:
CAP原则指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼
Azure CosmosDB有五种一致性级别,从数据一致性角度来说,我们按照最强的一致性,到最低的一致性,排序如下:
1.Strong (强一致性)
2.Bounded Staleness
3.Session (会话一致性)
4.Consistent prefix (一致性前缀)
5.最终一致性 (Eventual Consistency)
每一种级别都在一致性(Consistency)可用性(Availability)和性能(Performance)之间进行了权衡,并且有SLA (Service Level Agreement)
一致性级别和延迟
对所有一致性级别的读操作延迟,在第99位百分位的延迟小于10毫秒。该读操作的延迟是有SLA保障的。
The read latency for all consistency levels is always guaranteed to be less than 10 milliseconds at the 99th percentile. This read latency is backed by the SLA.
平均的读延迟,在第50个百分位的延迟小于2毫秒。The average read latency, at the 50th percentile, is typically 2 milliseconds or less
跨多个Azure区域且配置了Strong (强一致性)的CosmosDB账户,不在上面的性能指标范围内。
对所有一致性级别的写操作,在第99位百分位的延迟小于10毫秒。该写操作的延迟也是有SLA保障的。
The write latency for all consistency levels is always guaranteed to be less than 10 milliseconds at the 99th percentile. This write latency is backed by the SLA.
平均的写操作,在第50个百分位的延迟小于5毫秒
当Azure CosmosDB账户跨一个Azure数据中心区域,且配置了强一致性(Strong)的场景情况下,
写入延迟保证小于两个最远Azure区域中任何一个之间的往返时间(RTT)的两倍,加上第99百分位数的10毫秒。
这里举个例子,假设我们创建了Azure CosmosDB账户,且跨越了:Azure 新加坡数据中心、Azure香港数据中心和Azure东京数据中心,配置了强(Strong)一致性的场景。
写入的延迟=区域中任何一个之间的往返时间(round-trip time,RTT)的两倍=Azure新加坡数据中心<--->Azure东京数据中心之间的往返时间(RTT)的两倍,再加上第99百分位数的10毫秒
因为在分布式系统中,针对于强一致性(Strong)写入的场景,需要在所有分布式节点都执行了写入操作后,才会被确定返执行成功。
此选项目前处于预览状态
准确的往返时间(round-trip time, RTT)取决于光的速度和Azure网络拓扑结构。 Azure 网络不会针对任意两个 Azure 区域之间的 RTT 提供任何延迟 SLA。
对于你的 Azure Cosmos 帐户,将在 Azure 门户中显示复制延迟。 可以使用 Azure 门户监视与你的帐户关联的各个区域之间的复制延迟
一致性级别和吞吐量
在相同Request Unit (是CosmosDB的性能指标,我们会在后面的章节做详细的介绍)情况下,Session (会话一致性),Consistent prefix (一致性前缀)和最终一致性 (Eventual Consistency)的读取操作的吞吐量,是Strong (强一致性)和Bounded Staleness的两倍
对于给定类型的写入操作(例如插入、替换、更新插入和删除),所有一致性级别在相同的Request Unit情况下,写入吞吐量是相同的
一致性界别和数据持久化
在Azure多区域分布式数据库环境中,当发生区域范围的服务中断时,一致性级别与数据持续性之间存在直接关系。 制定业务连续性计划时,需了解应用程序在中断事件发生后完全恢复之前的最大可接受时间。 应用程序完全恢复所需的时间称为恢复时间目标 (RTO)。 此外,还需要了解从中断事件恢复时,应用程序可忍受最近数据更新丢失的最长期限。 可以承受更新丢失的时限称为恢复点目标 (RPO)。
下表定义了当发生区域范围的服务中断时,一致性模型与数据持续性之间的关系。 请务必注意,在分布式系统中,由于 CAP 定理的存在,即使一致性较高,也不可能存在 RPO 和 RTO 为零的分布式数据库
| Azure区域 | 复制模式 | 一致性级别 | RPO | RTO |
| 1 |
单主或多主 Single or Multi-Master |
任何一致性级别 | <240分钟 | <1周 |
| >1 |
单主 Single Master |
Session (会话一致性) Consistent prefix (一致性前缀) 最终一致性 (Eventual Consistency) |
<15分钟 | <15分钟 |
| >1 |
单主 Single Master |
Bounded Staleness | K&T | <15分钟 |
| >1 |
多主 Multi-Master |
Session (会话一致性) Consistent prefix (一致性前缀) 最终一致性 (Eventual Consistency) |
<15分钟 | 0 |
| >1 |
多主 Multi-Master |
Bounded Staleness | K&T | 0 |
| >1 |
单主或多主 Single or Multi-Master |
Strong (强一致性) | 0 | <15分钟 |
K = 某个项的“K”版本(更新)的数目。
T =时间“T”,自上次更新以来的时间间隔。
Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡的更多相关文章
- 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)
在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consisten ...
- Azure CosmosDB (3) 选择适当的一致性级别
<Windows Azure Platform 系列文章目录> 绝大部分的商业分布式数据库,要求开发人员选择两个极端的数据库一致性:强一致性(Strong Consistency)和最终一 ...
- Azure CosmosDB (2) CosmosDB中的数据一致性
<Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...
- 详解 CAP 定理 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. 分布式 ...
- 数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)
数据一致性(consistency).服务可用性(availability).分区容错性(partition-tolerance) 分布式系统理论基础 - CAP 2016-04-04 18:27 b ...
- CAP理论与MongoDB一致性、可用性的一些思考
大约在五六年前,第一次接触到了当时已经是hot topic的NoSql.不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉.但是印象深刻的是这么一张图片( ...
- Azure CosmosDB (1) 概述
<Windows Azure Platform 系列文章目录> Azure CosmosDB是一个全球分布式数据库服务(Global Distributed Database),提供低延迟 ...
- Azure CosmosDB (8) 性能指标Request Unit-RU
<Windows Azure Platform 系列文章目录> 本次将介绍Cosmos DB的性能指标RU (Request Unit). 总的来说,我们设置的Azure CosmosDB ...
- Azure 中虚拟机的区域和可用性
Azure 在中国的两个数据中心运行. 这些数据中心分组到地理区域,让用户可灵活选择构建应用程序的位置. 请务必了解 Azure 中虚拟机 (VM) 运行的方式和位置,以及最大化性能.可用性和冗余的选 ...
随机推荐
- FUJI 富士 富仕 串口 N500I N700I 连接
本人丰富的硬件连接经验, 1.出售富士生化设备N500I, N700I 接入,C#代码demo, 可连接机器验证,验证后付款2. 提供宠物行业富士生化设备N500I, N700I型号接入软件技术支持 ...
- spring cloud 工程构建
https://blog.csdn.net/zhou199252/article/details/80745151 https://blog.csdn.net/forezp/article/detai ...
- vue添加页面键盘事件
我司开发项目,用的是vue+elementUI,做登陆页面的时候,点击enter键的时候要实现和点击登陆按钮一样的功能,所以就百度了一下,于是一通百度之后,就在点击按钮上面直接添加了@keyup.en ...
- 分频器的Verilog实现
一.占空比50%的奇数分频 1.实现思路 实现奇数(N)分频,分别用上升沿计数到(N-1)/2,再计数到N-1:用下降沿计数到(N-1)/2,再计数到N-1,得到两个波形,然后把它们相或即可得到N分频 ...
- WINDOWS7环境下Informatica的安装[新手]
环境: 操作系统:Windows7(64位): 数据库:Oracle 11g R2: 数据库字符集:UTF-8 一.下载: (参考链接:https://blog.csdn.net/u011031430 ...
- 【Python】随机数random模块randint、shuffle、random、sample、choice、uniform、
1 ).random() 返回0<=n<1之间的随机实数n:2 ).choice(seq) 从序列seq中返回随机的元素:3 ).getrandbits(n) 以长整型形式返回n个随机位: ...
- tomcat配置去掉项目名称
在web项目中,把代码部署到服务器上访问时都不带项目名,可以配置tomcat 在tomcat安装目录下,找到conf/server.xml打开 <Host name="localhos ...
- mysql 数据库导出与导入
1.数据库导出 语句:mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 1.导出整个数据库结构和数据 mysqldump -h localhost -uroot -p ...
- JSP中重定向页面没有全屏显示的问题解决
<script type="text/javascript"> window.onload=function(){ if(window.parent != window ...
- SVM问题汇总
1.为什么要选择最大间隔分类器,请从数学角度上说明? 答:几何间隔与样本的误分次数间存在关系: 其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值 2.样本失衡会对SVM的结果产生影 ...