2013-05-07 52 views
1

我目前正在构建一个负载均衡(通过Apache进行外部调用)的应用程序,该应用程序启动一个Solr 4.2实例(或者更确切地说是一个CoreContainer)。我想建立一个跨越我的应用程序的所有实例(带有副本等)的SolrCloud。我知道如何设置这些服务器与所需的Zookeeper合奏等。在SolrCloud案例中使用EmbeddedSolrServer

我的问题属于我与SolrCloud进行交互的方式。所以在这里,它是:

  • 我的自定义应用程序接收到一个请求,并根据这一要求需要在SolrCloud

  • 更新信息,因为我开始嵌入我的应用程序Solr的情况下,我可以用一个EmbeddedSolrServer与索引进行交互,但是:这是与SolrCloud进行交互的正确方式吗?或者,这种方法是否会绕过Solr采用的整个集群方法,我最好将应用程序与SolrCloud集群分开并使用CloudSolrServer?

在此先感谢!

回答

0

仅出于调试目的,我宁愿不使用EmbeddedSolrServer。如果您尝试一次访问应用程序和管理控制台中的索引,则使用EmbeddedSolrServer会抛出LockObtainFailedException

http://wiki.apache.org/solr/EmbeddedSolr

+0

我基本上最终分离了应用程序,因为正如您所指出的那样使用EmbeddedSolrServer会带来更多的缺点(尤其是涉及到集群时) – svenp 2013-06-27 15:14:54

0

其实有使用Solr的测试模块创建嵌入式Solr的云在您的应用程序的方式。

<!-- Solr Test Framework --> 
<dependency> 
    <groupId>org.apache.solr</groupId> 
    <artifactId>solr-test-framework</artifactId> 
    <version>6.6.1</version> 
    <scope>test</scope> 
</dependency> 

检查UT书面jaihind213here它非常有用。