或者我是否需要实现其他解决方案,例如RabbitMQ用于消息队列以及其他一些用于负载平衡的服务?请指出我正确的方向。
答案 0 :(得分:0)
您正在CloudSolr模式下设置solr。您可以使用UIBezierPath
java客户端实现来负载平衡索引和搜索查询到solr。 CloudSolrServer是Solrj客户端中用于连接Solr云的类。
它连接到Zookeeper并跟踪集群中每个节点的状态。有了这些知识,CloudSolrServer客户端就知道哪些节点是领导者,并且只向领导者发送请求以节省时间。如果没有CloudSolrServer,请求将以循环方式发送到所有Solr节点(领导者和副本)。因此有获得当前碎片领导者的S / N机会,其中N是云中节点的总数(即领导者和复制品的总和= N),S是碎片领导者的数量。击中非领导者节点有(1-S / N)机会是浪费的,因为非领导者节点必须将请求传递给其领导者。使用CloudSolrServer,请求仅发送给Shard-Leaders,其性能要好得多。
如果某个节点崩溃,ZooKeeper会通知CloudSolrServer大致相同,以便CloudSolrServer将其从符合条件的solr实例列表中删除。如果选出新的领导者,则还会通知CloudSolrServer客户端。
事实上,Solr实际上在内部使用CloudSolrServer与集群中的其他节点进行通信。
使用Solr时,您不需要任何类型的排队机制。