2

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

将 solr 与 IIS 一起托管 - 因为我们还没有真正用完 IIS,而且网络很慢,所以我想将它托管在同一个盒子中。

Solr 将使用默认容器 (Jetty) 托管,并通过仅接受 localhost 连接(来自 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/

明确指定要查询的分片地址,提供用于负载平衡和故障转移的替代方案(由 | 分隔):

shards=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr

任何帮助深表感谢。

干杯!

4

1 回答 1

1

我做了一些更多的研究并发现:

  1. 我应该如何处理负载平衡:SolrCloud 自动完成,只需点击集群中的任何节点/核心,你就可以开始了。SolrCloud 将状态保存在 Zoo Keeper 中,因此它知道将请求路由到哪里。

  2. 提交:我计划通过配置进行 1 秒的软提交和 10 分钟的硬提交。复制:不用担心,当新节点/核心上线时,Solrcloud 会自动分配为分片(如果不是所有分片都在线)或副本。

  3. 自动处理(#1)。

  4. N/A with solr cloud。可以对任何实例/核心进行写入和读取,没关系。

  5. 我将使用近乎实时的搜索,所以不用担心这个。如果有人回答,仍然会很感激。

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

于 2012-08-14T23:28:15.170 回答