2012-11-29 51 views
2

我们有一个产品(我们称之为“PROD1”),我们要“整合”与其他产品(姑且称之为“Prod2的”),在“整合”意味着,PROD1 + Prod2的会“prod3”。 我们还有一些计划将更多“产品”添加到prod3中。关于Solr的拆分问题

到目前为止这么好。

我们使用Solr的用于在这两个产品的用户提供搜索和索引都可能是非常,非常大,收到了很多电话/秒。如果我们把所有东西放在一台服务器上,吞吐量就会成为一个垃圾。

所以,我们想使用分片(我相信这是正确的术语,对不起,如果我错了),但是,我有一些关于它的问题:

  1. 是否有可能分裂由“单产品指数 - 每台机器”或类似的指数?如果是的话,你如何建议我这样做?

  2. 如果(问题1 == true)那么让我们假设prod1索引将是machine1,prod2索引machine2可以在machine1和2中同时搜索结果和分数,偏移量等,以“简单”和正确的方式?

  3. 我读一些有关复制的因素,但我认为我不明白它的权利。它的目的究竟是什么?

  4. 我不确定在这里是否使用了正确的术语,因此,也许有人可以澄清究竟是核心,碎片等等。这种“简单”的怀疑在我的团队中产生了很多误解。

现在,这是问题。也许我会稍后再编辑它并添加更多内容。

在此先感谢。

回答

8

要回答为了您的问题:

  1. 它是由你来定义您要如何分配你的文件。您可以选择要将文档编入索引的服务器,并且如果您决定为一个产品索引编制索引,服务器,这是您的决定(根据文档来源于哪个产品,选择用于索引的服务器)。

  2. 是的。发送到Solr的查询字符串的分片= -parameter指示应搜索哪些服务器并合并为一个响应。只要你不看高进入的偏移量作为一个可能的问题,这不应该是一个问题(高offets在于Solr的有检索最多(偏移)从每个服务器文件的问题,要能对所有碎片进行评分)。

    碎片= server1的:8080/solr的/ corename,服务器2:8080/solr的/ corename

  3. 复制因子是相关SolrCloud,这隐藏了一些上工分片的复杂性(而且也引入了一些) 。使用SolrCloud Solr将确定自己使用哪些节点进行存储,并且复制因子会告诉Solr您想要将文档存储在多少台服务器上。如果您的复制因子为三,则至少有三台服务器在文档无法访问之前必须失败。如果你正在进行手动分片,你必须自己设置复制,并且知道什么服务器是备份服务器,就像你使用常规的Solr设置一样。

  4. Shard =只保留索引中所有文档的子集的服务器,core =一个服务器上的一个索引 - 服务器可能包含多个核心,其中每个核心都是一组独立的配置和模式在每个Solr实例中只能有一个核心 - Solr只有一个索引,仅此而已)。 SolrCloud首次与Solr 4.0发布,并开始获得一些牵引力。

Solr Wiki是一个开始挖掘关于这些概念的更多信息的好地方。

+0

谢谢,它阐明了我的想法很多关于solr/solrcloud的概念。 – caarlos0

+0

最后一个问题:让我们假设我有4台具有相同数据的服务器,其中一台我实际上执行搜索查询?另外,我必须在搜索之前每次检查它的时间?你的建议是什么? – caarlos0

+0

如果您有四台服务器具有相同的数据,只需随机选择一台服务器(或更好),请使用负载平衡器。负载平衡器将移除停止的节点,并定期重试它们以查看它是否回来。我们在apache中使用mod_jk和tomcat,并在后端节点上使用solr。 – MatsLindh