【问题标题】:elasticsearch through NEST: what is the recommended way to connect to a cluster of several hosts通过 NEST 进行弹性搜索:连接到多台主机集群的推荐方法是什么
【发布时间】:2013-04-22 13:18:50
【问题描述】:

我开始使用 NEST。 我在a previous question 中看到我应该在程序开始时只使用一次 TryConnect,然后使用 Connect。 但这对于长时间运行的系统来说似乎有点太天真了。 如果我有一个由 3 台机器组成的集群,并且我想确保我可以连接到这 3 台机器中的任何一台,该怎么办? 这样做的推荐方法应该是什么?

我应该: - 每次都使用 TryConnect,如果失败则使用不同的主机 + 端口(缺点 - 每次都需要额外的往返)?
- 尝试与客户端合作并有一些重试机制来处理由于连接问题导致的故障?也许在此之上实现一个连接池?

还有其他选择吗? 有什么建议/建议吗? 示例代码?

感谢您的帮助,
罗恩

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    连接池是一个经常被请求的功能,但由于涉及许多启发式方法和不同的方法,NEST 并没有开箱即用。您必须自己实施。

    我不建议在每次通话之前拨打TryConnect(),因为现在您要拨打两个电话而不是一个。

    每个 NEST 调用都会返回一个 IResponse,您可以检查 IsValidConnectionStatus 将保存请求和响应的详细信息。

    另请参阅handling responses 上的文档

    在 1.0 中,NEST 将开始在 TCP 级别错误的情况下抛出异常,因此可以实现更通用的连接池方法,并且 Nest 可能会附带一个单独的 nuget 包来实现一个(如果有任何参考)。另请参阅此讨论https://github.com/Mpdreamz/NEST/pull/224#issuecomment-16347889

    希望这对现在有所帮助。

    更新此答案已过时 NEST 1.0 附带开箱即用的连接池和集群故障转移支持:http://nest.azurewebsites.net/elasticsearch-net/cluster-failover.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-07
      • 2019-09-06
      • 2019-01-15
      • 1970-01-01
      • 2023-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多