在Solr 5.x中,zookeeper是否也执行负载平衡和消息队列的任务?

时间:2015-08-22 01:07:26

标签: solr apache-zookeeper solrcloud

或者我是否需要实现其他解决方案,例如RabbitMQ用于消息队列以及其他一些用于负载平衡的服务?请指出我正确的方向。

1 个答案:

答案 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时,您不需要任何类型的排队机制。