我正在修补repository pattern for CosmosDB。我修改了代码以获得单例CosmosDb DocumentClient
。存储库的每个实例都在进行网络调用以获取Database
和DocumentCollection
。所以我想知道缓存Database
和DoumentCollection
对象是否正确,因为在我的情况下我只有一个集合和一个数据库。
您看到的许多“演示”代码都是“不正确的”,因为只需几行代码即可从CosmosDB创建或读取内容。由于体积小,这将在没有单件的情况下正常工作。将简单操作扩展到高容量多线程应用程序,您将看到问题。
为了避免出现问题,您应该只在数据库中为每个CosmosDB实例和一个DocumentClient
创建一个DocumentCollection
,否则会产生额外的不必要实例化开销,在高负载下,您将遇到套接字耗尽。
我们也标记为易变(C#):
private static volatile DocumentClient cosmosClient;