快出海  >  出海问答  >  微软云  >  Azure CosmosDB配置多个Azure Region写入时,要如何考虑冲突类型和解决策略?

Azure CosmosDB配置多个Azure Region写入时,要如何考虑冲突类型和解决策略?

Azure  CosmosDB配置多个Azure  Region写入时,冲突类型和解决策略要如何考虑?
王乔 2020-09-24 提问
我来答
提交回答
1 个回答
何剑

对于配置了多个写入区域的Azure Cosmos DB帐户,当写入者同时更新多个区域中的相同项时,冲突划分为以下三种类型:

插入冲突:

当应用程序同时从两个或更多个区域插入具有相同唯一索引的两个或更多个项时,可能会发生这些冲突。例如,可能会因为ID属性而发生此冲突。所有写入最初可能会在其各自的本地区域中成功。但根据所选的冲突解决策略,最终只会提交一个具有原始ID的项目。

替换冲突:

当应用程序同时从两个或更多个区域更新单个项时,可能会发生这些冲突。

删除冲突:

当应用程序同时从一个区域删除一个项并从其他区域更新该项时,可能会发生这些冲突。

冲突解决策略:

Azure CosmosDB提供了灵活的策略驱动的机制来解决更新冲突。可以针对Azure CosmosDB容器,从以下两种冲突解决策略中进行选择:

1.Last Write Wins(LWW),最后写入者胜出。

如果在执行插入或替换操作时有两个或更多个项发生冲突,冲突解决路径值最大的项将成为优胜者。如果多个项的冲突解决路径的数字值相同,则由系统确定优胜者。保证所有区域融合到单个优胜者,并且提交的项的版本最终相同。当涉及到删除冲突时,已删除版本始终优先于插入或替换冲突。不管冲突解决路径的值如何,均会发生此结果。

“最后写入者胜出”是默认的冲突解决策略。它可用于SQL和MongoDB API帐户。

2.自定义

此解决策略旨在使用应用程序定义的语义来调解冲突。在Azure Cosmos DB容器上设置此策略时,还需注册合并存储过程。当在服务器的数据库事务下检测到冲突时,将自动调用此过程。在执行提交协议过程中,该系统可保证正好执行合并过程一次。

回答于 2020-09-24
小程序
公众号
商务合作
投稿采访
出海管家