2012-08-07 43 views
2

我正计划为我们的客户实施Solr。我们有一个基于.Net/SQL Server的产品。我们的数据库变得如此之大,我们决定使用Solr来提高查询性能(自动完成,选择列表,网格搜索等)。我们有大量的IIS盒子(因客户而异,典型配置包括16核心,96 GB RAM等),但网络速度很慢。我们的数据库大约100 GB。所以我想这个配置:Solr - 多核心写入器,阅读器复制配置

托管Solr的旁边IIS - 因为我们还没有真正刷爆了IIS和网络很慢,我想举办它在同一个盒子。

Solr的将要通过接受仅本地主机连接(从IIS)与默认容器(码头)托管并固定。我希望为这件作品减少管理费用。

我要去具有用于纯索引和多个复制从属内核的专用主芯(可以是10),用于纯查询。所有索引数据都可以存在于SSD中。

现在我的问题是:

  1. 我应该如何处理负载平衡? solrcloud会自动执行吗? (我看过的例子(下面)说“分片” - 我真的不需要分片。)在生产中使用Alpha可以吗? (我们有100个不同的客户端和相应的n/w,h/w配置)

  2. 我应该处理提交&从代码复制或让solr处理它?

  3. 当复制发生,我怎么将请求路由到其他核心? (覆盖作为#1份?)

  4. 在复制期间,将主核心进行进一步的更新被锁定?我应该从代码处理这种情况吗?

  5. 是否有可能从从属核心拉“最近更新”的数据 - 理想情况下,我想接近实时搜索功能,但如果solrcloud没有去,那么我想在UI中显示这个时间戳以便用户能够了解数据的最新情况。

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

明确指定要查询碎片的地址,给 替代品(由分隔|)用于负载均衡和故障转移:

碎片= localhost:8983/solr | localhost:8900/solr,localhost:7574/solr | localhost:7500/solr

任何帮助,非常感谢。

干杯!

回答

1

我做了一些更多的研究和揣摩:

  1. 我应该如何处理负载平衡:SolrCloud会自动完成,只需点击任一节点/核心集群中,你是好去。SolrCloud保留Zoo Keeper中的状态,所以它知道在哪里路由请求。

  2. 提交:我打算做1秒的软提交,并通过配置硬提交10分钟。复制:无需担心,当新节点/核心联机时,Solrcloud将自动分配为碎片(如果不是所有碎片在线)或副本。

  3. 自动处理(#1)。

  4. 不适用solr云。写入和读取可以完成任何实例/核心,没有关系。

  5. 我要近实时搜索,所以不用担心这个问题。如果有人回答它,我们将会很感激。

我希望我的研究对别人有用!