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

时间:2018-05-24 13:48:50

标签: spring-boot tomcat hazelcast

我们有多个Tomcats,每个Tomcats都部署了多个.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可以实现吗?如果是这样,怎么样? 现在我只通过Hazelcast找到解决共享网络会话的解决方案。但这对我来说似乎不是解决方案,或者我错了?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

是的,这是可能的。

您可以配置缓存名称。

应用程序app1使用名为app1的缓存。应用程序app2使用名为app2的缓存。 如果您正确配置它们,那么它们将不会看到每个其他数据。

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