【问题标题】:Elasticsearch NEST client singleton usageElasticsearch NEST 客户端单例使用
【发布时间】:2015-02-19 18:43:49
【问题描述】:

当使用.NET Elasticsearch NEST 客户端时,我试图弄清楚如何最小化客户端库对我们节点执行的 ping 次数。我知道有禁用 ping 的设置,但如果我们有一个节点关闭,我认为如果没有它们,我们会看到很大的负面性能影响。所以我真正想弄清楚的是,是否有一种方法可以在 ElasticClient 对象、连接状态信息或其他一些对象周围使用singleton pattern 来帮助实现这一目标。

基本上,我们需要一个共享对象,其中包含多个 ElasticClient 可以使用的所有节点及其启动/关闭状态,而无需创建每个新客户端都必须弄清楚。另一种选择是将 ElasticClient 用作单例本身。

我在多线程 ASP.NET 应用程序和 azure worker 角色中使用客户端,因此确保它跨线程工作很重要。

我在 ES 前面使用 nginx 来监控它的流量,你可以看到有大量的“/”命中,这一定是客户端库 ping。 (下面这个报告sn-p是通过Stackify解析我们的nginx日志。)

有没有人成功使用 ElasticClient 作为单例或有任何建议?

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    客户端本身是无状态的,因此您应该能够将其用作单例。您也可以每次都实例化一个新客户端,但如果您使用IConnectionPool,您需要确保每个客户端实例都接收到相同的IConnectionPool 实例。

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 2012-09-23
      • 1970-01-01
      • 2020-12-22
      • 2015-04-24
      • 1970-01-01
      • 2013-03-31
      • 2016-07-27
      • 2020-10-27
      相关资源
      最近更新 更多