2010-03-24 121 views
14

我正在考虑在多租户应用程序中使用Solr,我想知道是否有任何最佳实践或我应该注意的事项?Solr在多租户环境中

特别是有一个问题是,每个租户有一个Solr核心是否有意义。有大量Solr Cores有问题吗? 我正在考虑使用每个租户的核心,因为我可以分别保护每个核心。

感谢

+0

您使用的是哪种客户端平台? – 2010-04-07 21:31:22

+0

也考虑ElasticSearch以及 – Karussell 2011-02-04 09:27:30

回答

0

您将不再使用单独的table in a database为每个租户比你一个solr core为每个租户。

如果您想像数据库表这样的核心,并以这样一种方式组织您的项目,即每个核心代表问题空间中的一个对象,那么您可以更好地利用solr。

当你需要索引文本然后快速搜索时solr会闪耀其中。如果你不这样做,你可能会使用关系数据库。

另外,从您关于确保每位租户的solr的问题,我希望您不建议允许登录用户直接访问solr输出?您的用户不应该能够直接访问您的solr实例。

祝你好运。

3

Solr核心是一个多租户的好主意,特别是因为它们可以在运行时进行管理(所以不需要重新启动服务器)。您不应该因为拥有多个Solr内核而导致性能问题太多,但要注意一个内核的性能会受到其他内核上的工作的影响 - 他们可能会共享相同的磁盘。

我可以看到为什么您可能想要直接访问API,例如,如果每个“用户”是Drupal站点或类似的共享主机类型环境。最好的办法是保护不同的URL,例如如果你有/ solr/admin/cores,/ solr/client1作为客户端核心,而/ solr/client2作为另一个,你将有三种不同的身份验证,一个用于管理员,另一个用于租户。这是在容器(Jetty,Tomcat等)中完成的,请看一般的Solr安全页面:http://wiki.apache.org/solr/SolrSecurity - 您将需要以相同的方式为每条路径设置基本访问登录。

+1

在你对使用多核心过于兴奋之前,我推荐阅读下面的内容:http://wiki.apache.org/solr/LotsOfCores 基本上,很多核心似乎都能正常工作“ “,但如果你打算拥有10,000个内核,那么可能无法实现。 看来Solr 4.1将会有更好的工作来处理这个问题。 – ProVega 2012-10-24 17:26:25

0

Thaks ok ..你不能正确地使用缓存(inbuild),也不能满足你的需求。您添加权限位,您可以在其中更改querycompoent,在该权限位中您可以根据权限正常工作。此外还可以使用按位操作..利用此功能满足您的需求。