文档数据库客户端生存期



要访问DocumentDB/CosmosDB,我使用的是包Microsoft.Azure.DocumentDB.Core(v1.3.2(。我在创建和初始化类时注意到DocumentClient

var documentClient = new DocumentClient(new Uri(endpointUrl), primaryKey);
await documentClient.OpenAsync();

向终结点发射了许多请求,以获取有关索引和其他信息的信息。确切地说,有 9 个 HTTP 请求在 .OpenAsync() 上发出。这使得创建和激活客户端在性能方面是一项非常昂贵的操作 - 需要长达一秒钟的时间才能将所有请求带回家。

因此,为了减轻这种成本高昂的操作,我DocumentClient成为一个单例,并在应用程序的生命周期内保留引用。

应用程序 Asp.Net 核心 MVC,这可能会将此对象的引用保留在内存中数天。

问题:是否可以将此对象作为单例保留这么长时间? 如果不是,应该采取什么策略来处理它?或者有没有办法使初始化更便宜(即不发出这些初始请求?

我们也为自己想知道这一点,并发现了这个:

从文档中

SDK 使用提示 #1:在应用程序的生存期内使用单一实例 DocumentDB 客户端 请注意,每个 DocumentClient 实例都是线程安全的,并且在直接模式下运行时执行高效的连接管理和地址缓存。为了通过 DocumentClient 进行高效的连接管理和更好的性能,建议在应用程序的生存期内为每个 AppDomain 使用单个 DocumentClient 实例。

我想这仍然有效,现在你也可以用它解决 CosmosDB。

相关内容

  • 没有找到相关文章

最新更新