2017-04-18 22 views
0

我们有一个Web应用程序,它与托管在服务结构集群中的微服务进行对话(这意味着给定的服务可以托管在多个节点上)。微服务与文档DB集合交谈。可以说,我们有一个服务与独特的集合谈判。我们有批量处理,也可以利用这些微服务中的一些。我可以拥有多个documentDb集合的一致性模型吗?

我们希望在微服务中遵循UI相关请求的强一致性模型,以便用户不会对结果感到惊讶。由于非sql数据库在最终一致性方面表现最佳,因此我们希望为批处理使用最终的一致性。

  1. 是否有可能在documentDb中的collection/account级别选择最终一致性?
  2. 有了(1),我还可以为我的UI操作(来自微服务)选择强一致性吗?

我们只查找(1)和(2)同时为真的条件。

如果(1)和(2)同时出现,我该怎么办?

回答

3

谢谢Raghu 是的,它已经被支持。

您可以放松个别请求级别的一致性,并使用Strong for UI(默认)。

对于在请求级别设置的一致性 - 请尽快 - https://msdn.microsoft.com/en-us/library/azure/microsoft.azure.documents.client.requestoptions.consistencylevel.aspx#P:Microsoft.Azure.Documents.Client.RequestOptions.ConsistencyLevel

+0

这似乎与我所要求的完全相反。这是否意味着我们首先必须将默认一致性设置为强,并在各个操作中使用最终一致性?或者我可以首先将默认一致性设置为最终一致性,并在各个操作中使用强一致性?或者两种选择都可能? – Raghu

+0

是 - 首先将默认一致性设置为强,并在各个操作中使用最终一致性。一致性适用于读取操作 - https://docs.microsoft.com/en-us/azure/documentdb/documentdb-consistency-levels,写入操作总是提交仲裁(https://docs.microsoft.com/en- us/azure/documentdb/documentdb-distribute-data-global - “写入的等待时间保证包括在本地数据中心内持久的大多数仲裁提交” –

0

看来,它是不可能有在默认级别较弱的一致性模型,并有客户端级别的强一致性。请参阅:https://feedback.azure.com/forums/263030-documentdb/suggestions/7056677-allow-clients-to-specify-a-stronger-consistency-le

+0

这通常是正确的,但是您可以总是将特定操作打包到存储过程中并获取完整的ACID事务一致性 –

+0

我不关注你的陈述,你可以详细说明当默认级别设置为最终一致性时,存储过程如何达到高度一致性(比如说Strong)? – Raghu

+0

适用于同一分区中的数据,但所有操作(包括在SPROC的单次执行中发生的读取和写入的任意组合)将全部工作或全部工作金正日。 –

相关问题