【问题标题】:Hibernate Search in a Clustered Configuration?集群配置中的休眠搜索?
【发布时间】:2011-10-07 20:18:46
【问题描述】:

我正在开发一个 Java Web 应用程序,使用 JBoss Seam 作为应用程序框架。我想利用 Hibernate Search 来提供实体搜索功能。集成进展顺利,我离部署越来越近了。生产中应用的设置将是:

  • 2(或更多)Tomcat 应用服务器,负载平衡
  • 后端的 PostgreSQL 数据库

我的问题是,我如何配置 Hibernate Search,以便当实体在 App Server #1 上持久化时,本地 Lucene 索引在 App Server #2 上更新,反之亦然? Hibernate Search 是否有任何类型的集群配置支持?由于持久化可能发生在负载平衡的应用服务器中的任何一个上,因此设置必须在某种程度上是 master-master。

有人对如何解决这个问题有任何建议吗?提前感谢您的帮助!

【问题讨论】:

    标签: java hibernate tomcat cluster-computing hibernate-search


    【解决方案1】:

    正如reference documentation 中所述,有几种后端类型:

    • Lucene 用于非集群和
    • 适用于集群环境的 JMS 或 JGroups(第 3.6. / 3.7 节),请参阅文档中的这个漂亮插图:

    可能有一种使用Terracotta的方法,至少this post给出了这个方向的指示(我不知道它是否运作良好甚至根本不知道)。

    【讨论】:

    • 那么,有没有办法在运行 Tomcat 时利用 JMS 或 JGroups?我知道 JMS 是随 JBoss 开箱即用的,但我们将在 Tomcat 下部署应用程序。
    • @Shadowman:对,因为 Tomcat 只是一个 servlet 容器,它没有 JMS 代理。所以你必须自己关心这个问题。使用 Spring 时,您可以很容易地嵌入例如您的应用程序/战争文件中的 ActiveMQ 代理。或者使代理成为一个额外的结构组件,它也可以使用 JNDI 轻松地与 Tomcat 集成。对于 JGroups,您只需要正确的配置(和 jar 的)(再次参见参考指南)。
    猜你喜欢
    • 2020-09-18
    • 2012-11-16
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多