2017-06-20 85 views
0

在一个负载平衡的环境中,我有独立的Java线程(为了简单起见,基本上通过一个弹簧引导jar让我们称之为Project 1),它读取一些元数据并更新某个位置的lucene索引。Lucene索引复制

然后有一个实际的Web应用程序(项目2),通过它我想通过这些指标来查询(其另一个项目1创造),但是索引文件,有哪些可用的选项:

  1. 复制索引文件定期到Web应用程序的lucene,这是不可能的,因为我们可能不得不重新启动我信任的应用程序。
  2. 将两个项目作为一个包保存在战争中,因此lucene的单个实例可用于两者。
  3. 其他复制策略?

以上任何帮助将不胜感激。 Best, - Vaibhav

+0

为什么两个应用程序无法共享一个位置?任何具体原因? –

+0

由于它们都在各自的上下文中运行,因此只有其中一个可以在某个时间点访问索引文件,下面基本上是由quora中的某个用户引用的类似问题:https://www.quora.com/How -can-two-applications-share-the-index-built-by-Lucene – vaibhav

+0

我不理解上下文部分,对我来说它只是一个磁盘上的外部目录,所以为什么两个应用程序不能共享呢?它只是在目录包含lucene数据的情况下,但绑定到一个应用程序的目录对我来说是没有意义的。这两个应用程序是写入还是只写入一个? –

回答

1

这真的取决于您的应用程序的非功能需求以及由它们驱动的任何特定架构决策。

但这里的一些想法:

  • 复制像folderA到FolderB中的索引听起来像一个非常糟糕的主意。特别是如果两个应用都必须一直运行的话。

  • 您不希望这两个应用程序之间存在直接依赖关系,因此您必须构建自己的lucene组件,该组件提供您所需的API功能。

  • 我会建议用适当的API构建一个组件。这个组件使用lucene作为库,并且在像多个系统或者实例一样喜欢使用这个组件的情况下,我会建议一个很好的对Lucene的NRT(近实时)实现。