gpt4 book ai didi

c# - MongoDb Driver 2 - 单例实例弹性

转载 作者:行者123 更新时间:2023-12-03 17:35:29 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How should I register my mongodb service that uses the MongoClient, Singleton or scoped?

(3 个回答)


去年关闭。




在连接弹性方面,有没有人使用带有单例样式连接/集合实例的 MongoDB C# 驱动程序(v2+)?

问题

我们最近努力保护我们更广泛的基础架构,基本上通过 SSL 运行所有内容,甚至在内部运行。因此,我们最近获得了我们的主要 MongoDb 集群之一。最直接的区别之一是连接到集群的成本增加。我们的旧解决方案遵循典型的存储库模式,消息的订阅者将实例化存储库并在处理该消息后允许它被 GCd 之前新建一个连接。由于切换到 SSL,我们看到消息处理性能大幅下降 - 超出了我们的预期!

问题

有没有推荐的方法来使用 IMongoClient , IMongoDatabase , IMongoCollection<T>关于长生命周期的实例(周/月)。是否优雅地处理..

  • 集群中的特定节点出现故障(但集群仍然可用)
  • 整个集群下线(例如主要网络中断)
  • 设置更大的超时等是否明智,有什么影响?

  • 我目前的理解是 1. 应该没问题,因为 2. 它会尝试在超时窗口内缓冲操作,并在集群再次可用时处理它们。 3. 很大程度上取决于内存和操作的及时性(我们需要在内部考虑)。

    如果集群停机时间超过各种超时允许的时间,我假设抛出异常,此时我还假设我的实例将变得无用,除非我可以告诉驱动程序无限期地重试连接到集群。对我来说,这似乎是文档和我自己的研究的灰色地带 - 任何人都可以提供更多的阅读 Material 或建议,以解决这种情况下的网络故障等问题吗?

    提前谢谢了,

    最佳答案

    回答我自己的问题。您应该尝试重新使用 IMongoClient只要有可能 - 理想情况下,它应该是一个单例。 IMongoDatabaseIMongoCollection<T>可以根据需要创建。见"Re-use" sections of the Mongo C# driver documentation .

    IMongoClient 实现将保持与服务器的长期连接,并在网络故障时重新连接。

    关于c# - MongoDb Driver 2 - 单例实例弹性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43996823/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com