在solrj中使用LBHttpSolrClient访问单个solrcloud实例是否比使用默认的solrj和zookeeper行为更不健壮?它可以正确地在单个solrcloud实例上进行负载 balancer 吗?
我可用的solrcloud实例有一个包含大约900万个文档的集合,分布在三个分片上,每个分片大约有300万个文档 . solrcloud中有三个节点(服务器),有3个分片,replicationFactor为2,maxShardsPerNode为2.对于这个solrcloud实例,还有3个zookeeper节点也在这三个服务器上运行 .
Note: 以下名为 solrUrls 的变量中列出的值应以"http://"为前缀,而不是"http_url_" . 我目前无法发布超过2个网址,所以我必须"encode" . 抱歉 .
这是我被告知使用的基本代码:
String zkUrls = "solrd1:2181,solrd2:2181,solrd3:2181";
String solrUrls = {"http_url_solrd1:8983", "http_url_solrd2:8983", "http_url_solrd3:8983"};
LBHttpSolrClient.Builder lbclient =
new BHttpSolrClient.Builder().withBaseSolrUrls(solrUrls);
CloudSolrClient solr = new CloudSolrClient.Builder()
.withLBHttpSolrClientBuilder(lbclient)
.withZkHost(zkUrls)
.build();
cloudServer.setDefaultCollection(defaultCollection);
这个 LBHttpSolrClient 客户端是否能够正确使用提供的 solrUrls ,因为该变量中列出的每个节点都只是一个solrcloud中的节点?此负载 balancer 客户端是否自动查询所有其他节点以确保整个集合的结果完整,而不仅仅是该节点上存在的分片?
如果使用 LBHttpSolrClient 客户端是访问单个solrcloud实例的正确方法(优于solrj和zookeeper),那么有没有更好的方法让zookeeper提供基本的solr url?我的印象是 LBHttpSolrClient 客户端早于整个solrcloud设置,并且是一种在多个独立的solr实例上进行负载均衡的方法 . 如果是这样的话,那么与solrj和zookeeper相比, LBHttpSolrClient 客户端的使用是否会过时?
References:
此链接似乎有一个合适的 Headers ,可以提供我所询问的相同问题的一些见解,但它没有答案 .
此链接讨论了solrj和zookeeper如何协同工作,但没有解决我的问题,如果 LBHttpSolrClient 客户端不太健壮,或者它是否能在单个solrcloud的单个实例上正常工作 .
如果solrj和zookeeper比使用 LBHttpSolrClient 客户端更适合,则不解决 .