了解 Azure Cosmos DB 中的多区域写入
适用对象: NoSQL MongoDB Cassandra Gremlin 表
在不需要保证读取一致性的部分或全部中断情况下,实现近乎零停机时间的最佳方法是将帐户配置为多区域写入。 本文介绍了在配置多区域写入帐户时需要注意的关键概念。
中心区域
在具有两个或两个以上区域的多区域写入数据库帐户中,用来创建帐户的第一个区域称为“中心”区域。 添加到帐户的所有其他区域都称为“附属”区域。 如果中心区域已从帐户中删除,则会按照区域添加的顺序自动选择下一个区域作为中心区域。
到达附属区域的任何写入都是在本地区域中提交的仲裁,随后会以异步方式发送到中心区域进行冲突解决。 写入到达中心区域并解决了冲突后,将成为“已确认”写入。 在此之前,称为“暂定”写入或“未确认”写入。 从中心区域提供的任何写入都会立即成为已确认的写入。
了解时间戳
多区域写入帐户的一个主要差异是,存在两个与每个实体关联的服务器时间戳值。 第一个是在该区域中写入实体的服务器 epoch 时间。 此时间戳在单区域写入帐户和多区域写入帐户中均可使用。 第二个服务器时间戳值与确认无冲突或中心区域冲突得以解决的 epoch 时间相关联。 已确认或冲突已解决的写入具有分配的冲突解决时间戳 (crts
),而未确认或暂定的写入没有 crts
。 服务器设置的 Cosmos DB 中有两个时间戳。 主要区别在于帐户的区域配置是单写入还是多写入。
时间戳 | 含义 | 公开情况 |
---|---|---|
_ts |
写入实体的服务器 epoch 时间。 | 始终由所有读取和查询 API 公开。 |
crts |
已解决多写入冲突或确认无冲突的 epoch 时间。 对于多写入区域配置,此时间戳定义了更改源的更改顺序:
|
在响应更改源请求时公开,并且仅当请求启用“新建线路模型”时公开。 这是所有版本和删除更改源模式的默认设置。 |
后续步骤
接下来,可以阅读以下文章: