當前位置:編程學習大全網 - 網站源碼 - solrj的CloudSolrClient源碼分析及為什麽查詢慢

solrj的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合並結果,並返回

問題

在LBHttpSolrClient的request中,http請求是串行化的,也就說,壹次查詢,需要串行的發起n個http請求,太耗費時間

建議

在LBHttpSolrClient的request中對多個url發起請求,可以考慮並行化的http請求

在CloudSolrClient中保持對zk的長連接watch不斷

也可以從業務入手,采取手動路由的方式,即”知道自己要的數據在那個分片上“,直接對該分片發起http查詢請求,這樣會減少http請求個數

  • 上一篇:誰有宋軍多空平衡線?
  • 下一篇:幹貨直播源代碼
  • copyright 2024編程學習大全網