【问题标题】:How to share Hazelcast cache over multi-war Tomcats如何在多战 Tomcat 上共享 Hazelcast 缓存
【发布时间】:2018-05-24 22:03:57
【问题描述】:

我们有多个 Tomcat,每个 Tomcat 中都部署了多个 .war 文件(= Spring Boot 应用程序)。 我们现在需要在tomcat1 上的app1 和tomcat2 上的app1 之间进行一些分布式缓存。重要的是,tomcat1 上的 app2(以及 tomcat2 上的 app2)不能看到其他已部署应用的 Hazelcast 缓存。

下图显示了这种情况:

         Tomcat 1                               Tomcat 2
         +-----------------------------------+  +-----------------------------------+
         |                                   |  |                                   |
         |    app1.war       app2.war        |  |    app1.war       app2.war        |
         |    +----------+   +----------+    |  |    +----------+   +----------+    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    |          |   |          |    |  |    |          |   |          |    |
         |    +----+-----+   +----+-----+    |  |    +----+-----+   +-----+----+    |
         |         |              |          |  |         ^               ^         |
         +-----------------------------------+  +-----------------------------------+
                   |              |                       |               |
                   |              |                       |               |
                   |              |                       |               |
                   |              |                       |               |
                   +--------------------------------------+               |
Shared cache via Hazelcast        |                                       |
                                  |                                       |
                                  +---------------------------------------+
                                  Shared cache via Hazelcast

Hazelcast 可以做到这一点吗?如果是这样,怎么办? 现在我只找到通过 Hazelcast 谈论共享网络会话的解决方案。但这似乎不是我的解决方案,还是我错了?

【问题讨论】:

  • app2app1 实例是否使用同名缓存?
  • @ErnestKiwele 嗯,不,我们可以给 app1 和 app2 不同的缓存名称。

标签: spring-boot tomcat hazelcast


【解决方案1】:

如果您的应用程序必须严格隔离,那么您可能需要使用不同的cluster groups。集群组可以让不同的集群在同一个网络上共存,而彼此之间完全无法访问(假设配置正确)。

但是,如果您只需要将应用程序数据分开,那么您只需确保 app1 实例使用名称与 app2 缓存名称不冲突的缓存即可。这是最简单的实现。

如果您要部署一种多租户环境,其中两组应用程序之间存在安全边界,那么选择集群组选项会更好,因为您可以使用密码保护集群,并且应用程序将使用不同的端口进行通信在这些组中相互交流。

【讨论】:

  • 集群组功能听起来像是我正在寻找的解决方案。谢谢!由于它是一个多租户环境,这似乎是最好的解决方案。
【解决方案2】:

是的,这是可能的。

您可以配置缓存名称。

应用程序app1 使用名为app1 的缓存。应用程序app2 使用名为app2 的缓存。 如果配置正确,他们将看不到彼此的数据。

如果用“essential”表示他们不能表示您有比防止意外错误配置更严格的要求,那么您需要使用基于角色的安全性。

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 2021-02-25
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多