8

我在 Web 应用程序中使用 Solr。由于部署会更简单,我想嵌入 Solr。但是,http ://wiki.apache.org/solr/EmbeddedSolr说“嵌入 Solr 不太灵活,更难支持,没有经过很好的测试,应该为特殊情况保留”?

我想更详细地了解权衡。我想知道为什么它不那么灵活?什么情况下推荐使用嵌入式模式?

4

2 回答 2

8

据我所知,这些警告是正确的

无法暴露嵌入式服务器

如果有一天您想将应用程序的 solr 部分公开给世界其他地方,您将无法做到。这已在 SO 问题从外部应用程序访问嵌入式 Solr 服务器中进行了详细说明

没有管理界面

嵌入式服务器不提供管理界面。这是有道理的,因为它无法从外部访问,请参阅前面的警告。此外,当嵌入式服务器运行时,您无法通过另一个提供管理界面的完整 Solr 安装访问其 solr home 中的内核。这已在 SO 问题如何访问 EmbeddedSolrServer 实例的管理界面中进行了详细说明?

不支持分片

正如您在 SO 问题 How to connect embedded solr with each other by sharding中所读到的,嵌入式服务器不支持分片仍然存在一个悬而未决的问题。

于 2013-11-06T10:35:20.693 回答
7

当您需要一个非分布式的简单解决方案时,建议使用嵌入式服务器。例如,在编写小型单元和集成测试时,您可能希望拥有一个具有特殊配置的特殊 Solr 实例,例如使用 RamDirectories,而不是将更改写回。

这也适用于开发数据库。我总是使用内存数据库,而不是写回加载预设场景的文件(我也用于验收和集成测试)。这样,您在重新启动应用程序和进行回归测试时具有速度优势。如果您的服务器在一秒内或 10 秒内启动,这是不同的,这就是您可以实现的。如果您的测试运行缓慢,那么您在测试驱动开发方面就会放慢速度。

另一件事是,如果您需要专用的 Solr 服务器实例或需要云功能,您可以轻松地从使用嵌入式服务器切换到独立服务器。这只是几行代码,你就完成了。

因此,如果您不知道是否需要专用服务器,只需从嵌入式版本开始,即可享受简化的配置和设置以及轻微的性能提升。一旦你需要一个独立的服务器,只需更改一些代码行,其余的保持不变。

于 2013-12-17T13:43:44.947 回答