我只想了解查询流程以及LBHttpSolrServer的负载均衡如何工作。我们设置了一个集合SolrCloud,该集合有4个分片,每个分片有两个节点,即一个主节点和一个副本。
我已经配置了LBHttpSolrServer,如下所示。
SolrServer lbHttpSolrServer = new LBHttpSolrServer("shard1_master:8080/solr/","shard2_master:8080/solr/","shard3_master:8080/solr/","shard4_master:8080/solr/","shard1_replica:8080/solr/","shard2_replica:8080/solr/","shard3_replica:8080/solr/","shard4_replica:8080/solr/",);
根据我的理解,solr和solrj的工作原理如下,
这里我的困惑在第4点,我的理解是否正确?如果不是,请纠正。我是否需要将所有8个节点传递给LBHttpSolrServer,否则只需4个就足够了。
答案 0 :(得分:1)
是的,这是正确的。但是,您可以使用可识别云的SolrCloudServer,而不是使用LBhttpSolrServer。
CloudSolrServer将自动加载平衡请求 包含正在查询的集合的节点。较新 客户端的版本也会直接将更新路由到领导者 正确的分片,可以减少服务器上的负载并加快索引速度。
在内部,CloudSolrServer使用LBHttpSolrServer的实例,但是 URL列表是动态管理的,您的程序并不需要 担心它。