我正计划为我们的客户实施 Solr。我们有一个基于 .Net/SQL Server 的产品。我们的数据库变得如此之大,我们决定使用 Solr 来提高查询性能(自动完成、选择列表、网格搜索等)。我们有大量的 IIS 盒(因客户端而异,典型配置包括 16 核、96 GB RAM 等),但网络速度较慢。我们的数据库大约 100 GB。所以我在考虑这个配置:
将 solr 与 IIS 一起托管 - 因为我们还没有真正用完 IIS,而且网络很慢,所以我想将它托管在同一个盒子中。
Solr 将使用默认容器 (Jetty) 托管,并通过仅接受 localhost 连接(来自 IIS)来保护。我希望这篇文章的管理开销最小。
我将有一个用于纯索引的专用主核心和多个复制的从属核心(可能是 10 个)用于纯查询。所有索引数据都可以存在于 SSD 中。
现在我的问题是:
我应该如何处理负载平衡?solrcloud 会自动完成吗?(我在(下面)看到的例子是“分片”——我真的不需要分片。)在生产中使用 Alpha 可以吗?(我们有 100 个不同的客户端和相应的 n/w、h/w 配置)
我应该处理代码的提交和复制还是让 solr 处理它?
发生复制时,如何将请求路由到其他核心?(作为#1 的一部分涵盖?)
在复制期间,主核心是否会被锁定以进行进一步更新?我应该从代码中处理这种情况吗?
是否可以从从属核心中提取“最后更新”的数据 - 理想情况下,我想使用近乎实时的搜索功能,但如果 solrcloud 不行,那么我想在 UI 中显示这个时间戳,以便用户将了解数据的最新情况。
http://wiki.apache.org/solr/SolrCloud/
明确指定要查询的分片地址,提供用于负载平衡和故障转移的替代方案(由 | 分隔):
shards=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr
任何帮助深表感谢。
干杯!