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

Dr *_*oun 3 azure-cosmosdb

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

谢谢

Ara*_* R. 9

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

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

  1. 客户端写入 - > App Server 1 - > DocumentDB
  2. 客户端读取 - > App Server 2 - > DocumentDB

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

  • 哇谢谢.这里缺少Azure文档有时令人沮丧.因此,当像你这样的人花时间解释事情时,它会有很多帮助. (2认同)