solrj的CloudSolrClient源码分析及为什么查询慢
发布网友
发布时间:2022-08-16 01:40
我来回答
共1个回答
热心网友
时间:2023-09-26 00:49
solrj针对solrcloud提供了CloudSolrClient,用于对集群环境solr操作,从一个测试例子,一步步深入,看看CloudSolrClient是如何做查询操作的
1、使用CloudSolrClient发起一个查询请求
2、接着调用CloudSolrClient的request方法
3、CloudSolrClient的request方法中,首先回去获取请求中的collection名字,如果没有,获取默认设置的collcetion,然后调用requestWithRetryOnStaleState方法
4、requestWithRetryOnStaleState方法中,先去连接zk获取solrclound注册在zk上的信息
5、获取zk上的信息,经过处理后,封装到request中,调用sendRequest方法
6、在sendRequest中,会获取每个片的每个replicat的url与注册在zk上的live url做一个交集,得到一个查询url集合,然后创建一个LBHttpSolrClient,请求solrcloud
7、LBHttpSolrClient的request中会在for循环中挨个的轮询上一个步骤中放入的urllist发起http查询请求
在rsp合并结果,并返回