分布式 Web 应用程序的 Azure DocumentDB 一致性
Azure DocumentDB Consistency for Distributed Web Apps
我有一个部署在 Azure 中的非常标准(Asp.Net 核心)网络应用程序。我正在使用多个未使用会话亲和性的应用程序服务器,因此同一用户可能会在后续请求期间访问不同的服务器。
我想使用 Azure DocumentDB 为我处理一些数据存储。使用模式是每个登录用户每分钟最多发出 10 次命令来读取然后更新一条数据记录。每个用户将读写一条记录。每个用户都有自己的记录。
在阅读了有关一致性的 DocumentDB 文档后,我对它们的工作原理有一些疑问。
我的要求是
- 用户必须始终读取最新版本的记录,无论他们在登录时连接到哪个 AppServer。
- 如果用户注销并稍后(可能是 30 秒,可能是一个小时)重新登录,他们需要读取最新版本的记录,包括可能发生的任何写入。
- 我需要 DocumentDb 的区域故障转移功能。这似乎排除了 "Strong" 一致性水平,否则我很乐意为此付出代价。
我想我需要使用 "Session" 一致性,但我不确定如何在网络场场景的上下文中处理 SessionToken。
我想我可以将 SessionToken 存储为 cookie,但是 DocumentDB "session" 的生命周期是多长?文档似乎对此保持沉默。此外,如果用户注销并重新登录并且会话已过期,会发生什么情况?
也许我不完全了解写入是如何在 DocumentDB 中复制的,也许我还没有完全了解如何配置 DocumentDB 的 read/write 区域来解决所有这些问题?
如果我在主要数据中心区域有一个主要 read/write DocumentDB,在另一个区域有一个辅助 "read" DocumentDB,这是否满足了我的一致性和故障转移要求?
任何澄清将不胜感激!
DocumentDB 会话令牌永不过期。您当然可以遵循 cookie 模式来保证跨 login/logout 的用户的强一致性。如果帐户设置为具有有限的陈旧性,您还可以通过使用仅从帐户的写入区域读取的第二个 DocumentClient 来保证强读取。
我有一个部署在 Azure 中的非常标准(Asp.Net 核心)网络应用程序。我正在使用多个未使用会话亲和性的应用程序服务器,因此同一用户可能会在后续请求期间访问不同的服务器。
我想使用 Azure DocumentDB 为我处理一些数据存储。使用模式是每个登录用户每分钟最多发出 10 次命令来读取然后更新一条数据记录。每个用户将读写一条记录。每个用户都有自己的记录。
在阅读了有关一致性的 DocumentDB 文档后,我对它们的工作原理有一些疑问。
我的要求是
- 用户必须始终读取最新版本的记录,无论他们在登录时连接到哪个 AppServer。
- 如果用户注销并稍后(可能是 30 秒,可能是一个小时)重新登录,他们需要读取最新版本的记录,包括可能发生的任何写入。
- 我需要 DocumentDb 的区域故障转移功能。这似乎排除了 "Strong" 一致性水平,否则我很乐意为此付出代价。
我想我需要使用 "Session" 一致性,但我不确定如何在网络场场景的上下文中处理 SessionToken。
我想我可以将 SessionToken 存储为 cookie,但是 DocumentDB "session" 的生命周期是多长?文档似乎对此保持沉默。此外,如果用户注销并重新登录并且会话已过期,会发生什么情况?
也许我不完全了解写入是如何在 DocumentDB 中复制的,也许我还没有完全了解如何配置 DocumentDB 的 read/write 区域来解决所有这些问题?
如果我在主要数据中心区域有一个主要 read/write DocumentDB,在另一个区域有一个辅助 "read" DocumentDB,这是否满足了我的一致性和故障转移要求?
任何澄清将不胜感激!
DocumentDB 会话令牌永不过期。您当然可以遵循 cookie 模式来保证跨 login/logout 的用户的强一致性。如果帐户设置为具有有限的陈旧性,您还可以通过使用仅从帐户的写入区域读取的第二个 DocumentClient 来保证强读取。