gpt4 book ai didi

java - Hibernate Search (Lucene) 近实时索引管理器和 Tomcat 并行部署

转载 作者:行者123 更新时间:2023-11-28 22:26:34 25 4
gpt4 key购买 nike

首先介绍一些背景知识:我目前在我的 Java 网络应用程序中使用 Hibernate Search 4.2,并且我处理编写繁重的 Lucene 索引,我在其中存储了大量数据。使用基于目录的索引管理器时,存储在我最大索引中的单个对象的索引操作大约需要 1 秒

为了提高性能,我将 indexmanager 切换为近实时,性能得到了突飞猛进的提升,但现在我想使用 Tomcat Parallel Deployments 实现零停机部署(这允许我在单个 Tomcat 中并排放置同一应用程序的 2 个不同版本),我发现我不能再使用近实时索引管理器,因为它会缓冲内存中的修改并避免刷新到磁盘直到缓冲区 ram 已满或应用程序关闭。

我的问题是:在这种情况下我有哪些替代解决方案?我希望索引编制过程尽可能同步

我查看了 Hibernate Search 的代码,发现有不同的提交策略和一个名为 IndexWriterHolder 的类允许我提交和刷新写入,但我不确定这些 API 是否或如何被公开曝光。

我还看到 Lucene 4 实现了并发刷新,并且我在 Hibernate Search 5 中发现了 ma​​x_thread_states 标志,它允许我指定并发写入器的数量每个 IndexWriter 线程,但我以前从未使用过它,我不确定并发刷新是否对我的情况有帮助。

非常感谢任何帮助。谢谢。

最佳答案

好问题。简短的回答是目前这是不可能的。

IndexWriterHolder 确实不是公共(public) API,并且由于它在后台线程中处理队列而难以公开:直接调用它而不是通过将事件调度到队列中会很活泼。

在安全的情况下,会自动使用 Lucene 的并发刷新功能;例如在 MassIndexing 期间;我不希望 max_thread_states 属性对您有多大帮助,但值得尝试其他调整选项。

我是 Hibernate Search 开发人员之一,并不知道 Tomcat 的并行部署:这听起来像是一个我们可以探索支持的有趣功能。请在 JIRA 上打开功能请求或在 forums 上开始对话更好地帮助我们了解这是如何工作的。

关于java - Hibernate Search (Lucene) 近实时索引管理器和 Tomcat 并行部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42507019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com