在 Azure CosmosDB 的情况下缓存数据库和文档集合对象是否正确?



我正在修补CosmosDB的存储库模式。我已经修改了代码以具有单例 CosmosDb DocumentClient。存储库的每个实例都在进行网络调用以获取DatabaseDocumentCollection。所以我想知道缓存DatabaseDoumentCollection对象是否正确,因为在我的情况下,我只有一个集合和一个数据库。

你看到的许多"演示"代码都是"不正确的",因为它是从 CosmosDB 创建或读取某些内容的几行代码。由于体积低,如果没有单例,这将正常工作。将简单操作扩展到大容量多线程应用程序,您将看到问题。

为了避免出现问题,应仅为每个 CosmosDB 实例创建一个DocumentClient,并在数据库中为每个集合创建一个DocumentCollection,否则将产生不必要的实例化的额外开销,并且在高负载下,你将遇到套接字耗尽。

我们也将我们的标记为易失性(C#(:

private static volatile DocumentClient cosmosClient;

最新更新