代码之家  ›  专栏  ›  技术社区  ›  Tobias

如何在多战Tomcats上共享Hazelcast缓存

  •  1
  • Tobias  · 技术社区  · 8 年前

    我们有多个Tomcat,每个Tomcat中都部署了多个.war文件(=spring boot app)。 我们现在需要在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讨论共享网络会话的解决方案。但这似乎不是我在这里的解决方案,还是我错了?

    2 回复  |  直到 8 年前
        1
  •  1
  •   ernest_k Petronella    8 年前

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

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

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

        2
  •  0
  •   Neil Stevenson    8 年前

    是的,这是可能的。

    您可以配置缓存名称。

    应用 app1 使用名为的缓存 APP1 。应用 app2 使用名为的缓存 APP2 . 如果配置正确,他们将看不到每个人的其他数据。

    如果由“ 本质的 “他们不能,你的意思是你有比防止意外的错误配置更强大的需求,然后你需要使用基于角色的安全性。