【发布时间】:2017-03-14 18:38:32
【问题描述】:
我有一个非常标准的 (Asp.Net Core) Web 应用程序,它部署在 Azure 中。我正在使用多个不使用会话亲和性的应用服务器,因此同一用户可能会在后续请求期间访问不同的服务器。
我想使用 Azure DocumentDB 为我处理一些数据存储。使用模式是每个登录用户每分钟最多发出 10 次命令来读取并更新数据记录。每个用户将读取和写入一条记录。每个用户都有自己的记录。
在阅读了有关一致性的 DocumentDB 文档后,我对它们的工作方式有几个疑问。
我的要求是
- 无论用户在登录时连接到哪个 AppServer,都必须始终阅读最新版本的记录。
- 如果用户注销然后在稍后的某个时间点(可能是 30 秒,可能是一个小时)重新登录,他们需要阅读最新版本的记录,包括可能发生的任何写入。李>
- 我需要 DocumentDb 的区域故障转移功能。这似乎排除了“强”一致性级别,否则我很乐意为此付费。
我想我需要使用“会话”一致性,但我不确定如何在网络农场场景的上下文中处理 SessionToken。
我想我可以将 SessionToken 存储为 cookie,但是 DocumentDB“会话”的生命周期是多少?文档似乎对此保持沉默。另外,如果用户注销并重新登录并且会话已过期,会发生什么情况?
也许我不完全了解如何在 DocumentDB 中复制写入,以及如何配置 DocumentDB 的读/写区域来解决所有这些问题?
如果我的主要数据中心区域有一个主要的读/写 DocumentDB,而另一个区域有一个辅助“读取” DocumentDB,这是否满足我的一致性和故障转移要求?
任何澄清将不胜感激!
【问题讨论】:
-
在下面回答,但如果您想更详细地讨论,请发送电子邮件至 Microsoft dot com 的 askdocdb
标签: azure azure-cosmosdb