【发布时间】: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