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