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合並結果,並返回
問題
在LBHttpSolrClient的request中,http請求是串行化的,也就說,壹次查詢,需要串行的發起n個http請求,太耗費時間
建議
在LBHttpSolrClient的request中對多個url發起請求,可以考慮並行化的http請求
在CloudSolrClient中保持對zk的長連接watch不斷
也可以從業務入手,采取手動路由的方式,即”知道自己要的數據在那個分片上“,直接對該分片發起http查詢請求,這樣會減少http請求個數