2017-04-18 19 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的單次執行中發生的讀取和寫入的任意組合)將全部工作或全部工作金正日。 –

相關問題