我只能使用一台服务器来运行我的应用程序和我的Solr服务器。我想知道在这台机器上部署SolrCloud和zookeeper的几个节点(例如使用VM或docker)是否有效,性能和可用性是否合理。由于我将容易受到硬件故障的影响,因此我主要关注的是防止软件故障和性能。
因此,添加一些节点(3个可能?)会有助于使Solr服务器具有更高的可用性或更好的性能吗?或者它会产生相反的效果吗?
答案 0 :(得分:3)
在一块硬件上使用多个JVM通常不会有太大帮助。
正如您所提到的,在一台计算机上使用多个JVM并不会降低您的硬件故障漏洞,并且会增加一堆认知复杂性,因为现在您必须记住这只是因为您有三个副本,它不会这意味着两个人可能会失败,除非你特别小心你放三个中的每一个。
对于大多数用途,只需在单个JVM / Solr实例中使用其他分片就更简单了,并实现了将每个核心的索引大小降低到可管理级别的相同性能目标。这是SolrCloud的核心功能。
我所知道的唯一例外是你正在处理需要非常大的JVM堆的索引或使用模式。一个非常大的JVM堆可能导致最大GC暂停时间,而GC调优只能帮助这么多。在这种情况下,使用多个JVM(每个JVM具有一个副本/分片)可以将最坏情况的GC暂停限制为单个副本所需的暂停。
你也提到了Zookeeper,所以值得注意的是ZK是一个有点不同的野兽。您可能应该单独托管ZK,您应该始终使用奇数个ZK节点,并且每个物理主机永远不会超过一个。