我想建立一个超快速的SolrCloud系统,理想情况下应保证响应时间短。问题是Solr通常有大约1-5%的慢速响应,例如由于领导人选举,合并频繁的词语等。
问题:是否有人都实施过这样的解决方案,或者可以让我指出类似的解决方案,或者要考虑的问题/建议是什么?
我一直在分析SolrJ客户端,并认为与LBHttpSolrClient类似的方法可以起作用-进行以下修改:
客户端将向所有相关的SolrCloud节点并行发送查询 (多线程),并使用第一个到达的答案。这些可以通过Web服务框架(如Apache CXF)生成。
控制文档ID,控制/跟踪它们在分片/副本中的分布以及通过ZooKeeper /集群状态进行监视(例如,从查询返回的状态)。然后-根据群集设置配置和当前状态(包括ZooKeeper查询),SolrJ客户端可以发送查询以精确确定那些对于给定查询而言应该是活动且相关的节点。
通知SolrJ:如果可以暂时不可用的集群更改或服务(ZooKeeper / Solr / Ranger等)通知SolrJ,那就太好了。 >不要与他们浪费时间。
添加监视/警报:理想情况下,SolrJ客户端将获取所有答案的计时,并将每个节点和Zookeeper的计时报告给监视组件(Ambari,Atlas,Log,监视/更改数据库,发送电子邮件等)
有什么建议吗?