2017-03-14 26 views
1

我有一個在Azure中部署的漂亮標準(Asp.Net Core)Web應用程序。我正在使用多個不使用會話關聯的應用程序服務器,因此同一用戶在後續請求中可能會遇到不同的服務器。分佈式Web應用程序Azure DocumentDB一致性

我想使用Azure DocumentDB爲我處理一些數據存儲。使用模式是每個登錄用戶每分鐘發出一次命令10次以讀取並更新數據記錄。每個用戶將讀取和寫入一條記錄。每個用戶都有自己的記錄。

讀取關於一致性DocumentDB文檔後,我留下了他們是如何工作的幾個問題。

我的要求是

  1. 用戶必須經常閱讀最新版本的記錄,也不管它們連接,而他們在登錄該應用服務器的。
  2. 如果用戶註銷,然後重新登錄在稍後的某個時間點(可能是30秒,可能是一個小時),他們需要閱讀最新版本的記錄,包括可能發生的任何寫入。
  3. 我需要DocumentDb的區域故障轉移功能。這似乎排除了「強」的一致性水平,否則我很樂意爲此付費。

我在想我需要使用「會話」一致性,但我不確定如何處理web場場景中的SessionToken。

我想我可以在SessionToken存儲爲一個cookie,但什麼是DocumentDB「會話」的壽命?文檔似乎對此沒有提及。另外,如果用戶註銷並返回並且會話過期會發生什麼情況?

也許我沒有寫的是如何內DocumentDB複製,也許在如何解決這一切都配置爲DocumentDB讀/寫區有充分的瞭解?

如果我有一個主讀/在我的主數據中心區域和寫DocumentDB次要「讀」 DocumentDB在另一個區域,這是否解決我的一致性和故障轉移的要求?

任何澄清將不勝感激!

+0

的答案,但請發送電子郵件askdocdb微軟科網你想要更詳細 –

回答

2

DocumentDB會話令牌永不過期。您當然可以按照Cookie模式來保證用戶在登錄/註銷時具有很強的一致性。如果帳戶設置爲有限陳舊性,則還可以通過使用僅從帳戶的寫入區域讀取的第二個DocumentClient來保證強讀取。下面

+0

所以澄清討論情況......讀總是有相同的區域內較強的一致性?所以只要我只使用一個區域,我就不用擔心一致性問題了。在那種情況下,我只會在故障轉移事件期間從次區域讀取數據? – user1142433

+0

如果您的帳戶使用有限陳舊,是的。編輯我的回答 –

+0

因此,爲多區域部署配置有界陳舊需要允許至少100,000次滯後操作。這只是複製區域嗎?我讀過https://docs.microsoft.com/en-us/azure/documentdb/documentdb-consistency-levels,但我找不到任何暗示來自主要區域的讀取操作具有強大的一致性,因爲「有界陳舊「設置。 – user1142433