《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) 高可用性的更多相关文章

  1. Azure CosmosDB (2) CosmosDB中的数据一致性

    <Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...

  2. Azure CosmosDB (9) Unique Key Constraints

    <Windows Azure Platform 系列文章目录> 在Azure Cosmos DB中,还支持Unique Key Constraints(唯一键约束). 我们可以在Azure ...

  3. Azure CosmosDB (8) 性能指标Request Unit-RU

    <Windows Azure Platform 系列文章目录> 本次将介绍Cosmos DB的性能指标RU (Request Unit). 总的来说,我们设置的Azure CosmosDB ...

  4. Azure CosmosDB (7) 分区键Partition Key

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...

  5. Azure CosmosDB (6) 冲突类型和解决策略

    <Windows Azure Platform 系列文章目录> 当我们为CosmosDB配置多个Azure Region写入,就需要考虑冲突类型和解决策略. 对于配置了多个写入区域的 Az ...

  6. Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡

    <Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...

  7. Azure CosmosDB (3) 选择适当的一致性级别

    <Windows Azure Platform 系列文章目录> 绝大部分的商业分布式数据库,要求开发人员选择两个极端的数据库一致性:强一致性(Strong Consistency)和最终一 ...

  8. Azure CosmosDB (1) 概述

    <Windows Azure Platform 系列文章目录> Azure CosmosDB是一个全球分布式数据库服务(Global Distributed Database),提供低延迟 ...

  9. Azure CosmosDB (14) 使用Postman访问CosmosDB REST API

    <Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...

随机推荐

  1. ubuntu 18.04启动samba图形管理界面

    启动samba图形界面管理器出现错误: Failed to load module "canberra-gtk-module" 或 SystemError: could not o ...

  2. Python实现12306自动查票程序

    这是在网上扒拉过来的,原文链接: http://blog.csdn.net/An_Feng_z/article/details/78631290 目前时间2018/01/04 文中各种接口均为可用,亲 ...

  3. Python_02

    Python 判断语句  if,while if ture: print(1) else: print(0) for循环和内嵌函数range() range(a,b,c)   a:起始位置  b:终止 ...

  4. Springboot中的事件Event

    事件Event作为一种常用的线程通讯工具,在Springboot中可以方便地提供开发者进行线程交互. 1.事件定义 1 import org.springframework.context.Appli ...

  5. 定时清理elasticsearch

    索引这种格式 以下脚本加入crontab #每天清理es数据 0 1 * * * /data/sh/rm_esindex.sh >> /data/logs/crontab/rm_esind ...

  6. AGV

    AGV AGV是(Automated Guided Vehicle)的缩写,意即“自动导引运输车”,是指装备有电磁或光学等自动导引装置,它能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车 ...

  7. JavaScript获取元素尺寸和大小操作总结(转载)

    一.获取元素的行内样式 var obj = document.getElementById("test"); alert(obj.height + "\n" + ...

  8. 神州数码BGP路由协议配置

    实验要求:了解BGP路由协议的配置方法及原理 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface l0 进入端口 ip add ...

  9. 【oracle】ORA-02289: sequence does not exist

    select * from user_sequences where sequence_name = 'NLDP_LGIR_BASE_SEQUENCE'; 通过该指令查看SEQUENCE是否存在

  10. JavaSE-类

    一.基础概念:计算机语言的发展是接近人的思维方式演变:汇编语言(面向机器).C语言(面向过程).java(面向对象) 二.成员变量和局部变量: 1.全名定义一个类: Package 包名: Class ...