会话一致性和.NET客户端SDK

时间:2016-04-26 23:19:47

标签: azure-cosmosdb

我试图了解通过.NET客户端SDK使用Azure DocumentDb时Sessions Consistency的实际含义,即定义(和绑定)会话的内容。每次我们创建DocumentClient的新实例时都会创建一个新会话,如果我们使用IReliableReadWriteDocumentClient包装器,行为会改变吗?

由于

1 个答案:

答案 0 :(得分:9)

是的,每次创建DocumentClient类的新实例时都会创建一个新会话。每个DocumentClient实例都维护一个集合映射 - >会话令牌映射。客户端保存从服务器接收的最新会话令牌,并在读取请求期间将其作为标头(x-ms-sessiontoken)回显。这使DocumentDB能够找到集合的最新副本,以提供会话(或读写)一致性。这与IReliableReadWriteDocumentClient相同,因为它是DocumentClient的包装器。

注意:实现会话一致性的最简单方法是让一个DocumentClient实例自动为您管理它。您还可以更复杂地管理跨多个DocumentClient实例的逻辑会话。例如,假设您有一个负载平衡的Web API,其中有两个服务器,每个服务器都有一个DocumentClient实例,并且您希望这些服务器之间的会话一致性。

  1. 客户端写入 - > App Server 1 - > DocumentDB
  2. 客户端读取 - > App Server 2 - > DocumentDB
  3. 您可以通过将在步骤1中返回的x-ms-sessiontoken保存为客户端中的cookie,然后在读取请求中回显该x-ms-sessiontoken来实现此目的。通过对会话令牌进行往返,可以获得会话一致性。