我已经对在cosmosdb的dotnet中使用会话令牌做了一些研究,到目前为止,我发现了以下两个链接,这些链接为我提供了一些关于如何使用它的提示:利用-会话令牌和如何转换会话令牌。
在我们的场景中,如果更新属于同一个userId,我们希望具有强一致性(但我们不希望对所有数据使用强一致性),这样当一个实例更新该用户下的数据时,其他所有人都会立即看到结果。我们还希望使用cosmosdb作为另一个场景的锁。
但是,上面的链接只显示了如何重用创建文档时返回的令牌。我想知道我是否能够构造自己的会话令牌,并使用它来获得很强的一致性。
例如,如果我想更新特定userId下的数据,我将使用{userId}:-1#1作为会话令牌。这是否是使用会话令牌的有效方式?我也不确定pkrangeid、Version、GlobalLSN等字段的含义,以及它们在cosmosdb处理一致性问题时所扮演的角色。
提前感谢!
发布于 2020-09-27 16:19:14
会话令牌包括客户端无法创建的LSN。会话令牌必须由服务发出,因为它是为会话一致性提供一致性保证的唯一方法。
要获得区域内强一致性,或者更准确地说,读取会话一致性提供的您自己的写保证,并且正在使用Cosmos客户端的单个实例,您将已经读取了您自己的写保证。您不需要管理会话令牌。宇宙SDK为你做这件事。
如果您有一个场景,在不同的进程中有多个Cosmos DB客户端实例,并且您希望读取自己的写保证,那么您有两个选项。
https://stackoverflow.com/questions/64084499
复制相似问题