嵌入Solr有什么问题?

10
我在一个Web应用程序中使用Solr。由于部署更简单,我想嵌入Solr。然而,http://wiki.apache.org/solr/EmbeddedSolr说“嵌入式Solr不够灵活,难以支持,测试不够充分,应该保留给特殊情况”?
我想更详细地了解权衡。我想知道为什么它不够灵活?在什么情况下建议使用嵌入式模式?
2个回答

9
据我所知,这些注意事项是正确的。
没有办法暴露嵌入式服务器。如果有一天,您想将应用程序中的Solr部分暴露给全世界,您将无法这样做。这在SO问题Access embedded Solr server from external application中已经详细说明。
没有管理界面。嵌入式服务器不提供管理界面。这是有道理的,因为它不能从外部访问,参见前面的注意事项。此外,在嵌入式服务器运行时,您无法使用另一个提供管理界面的完整的Solr安装访问其solr home中的核心。这在SO问题How to access the admin interface of an EmbeddedSolrServer instance?中已经详细说明。
没有分片支持。

正如你在SO问题中所读到的如何通过分片将嵌入式solr连接在一起,仍存在一个未解决的问题,即嵌入式服务器不支持分片。


7
推荐使用嵌入式服务器,当您需要一个简单的非分布式解决方案时。例如,在编写小型单元和集成测试时,您可能希望具有特殊配置的专用Solr实例,例如使用RamDirectories而不是将更改写回。
对于开发数据库也同样适用。我总是使用内存数据库,不将更改写回文件,只加载预设场景(我还用于验收和集成测试)。这样,您就可以在重启应用程序和进行回归测试时获得速度优势。如果您的服务器在一秒钟或十秒钟内启动,那么差别就在于您可以实现什么。如果您的测试速度慢,那么在进行测试驱动开发时会受到影响。
另外,如果您需要专用的Solr服务器实例或需要云功能,您可以轻松地从使用嵌入式服务器切换到单独的服务器。只需几行代码,即可完成操作。
因此,如果您不确定是否需要专用服务器,请从嵌入式版本开始,享受简化的配置和设置以及微小的性能提升。一旦您需要单独的服务器,只需更改一些代码即可,其余内容保持不变。

生产环境中小数据集有什么问题?也许是由老式SQL数据库支持的几千条记录,每次启动都会填充嵌入式Solr? - Sven Döring
如果数据集是恒定的,那当然可以。但如果不是,你就必须传递事件,如果你的系统是分布式的,或者有其他方式让每个实例跟上现实。这通常是让solr“集群”为您处理同步的时候。 - Martin Kersten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接