spring-boot - 如何在多战 Tomcat 上共享 Hazelcast 缓存

标签 spring-boot tomcat hazelcast

我们有多个 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 谈论共享网络 session 的解决方案。但这似乎不是我的解决方案,还是我错了?

最佳答案

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

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

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

关于spring-boot - 如何在多战 Tomcat 上共享 Hazelcast 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50511049/

相关文章:

Spring boot + elasticsearch 前缀添加不起作用

java - 解析 findBy 中的嵌套对象属性

java - 从繁忙的 Java Web 应用程序插入 30,000 个用户后,SQL Server 2008 变慢

spring-boot - 为什么从 Spring Framework 5.x 中退出对 Jasper 的支持?

docker - Spring Boot Actuator 为 Docker 上的应用程序返回

java - 初始堆大小无效。无法创建Java虚拟机

Tomcat 启动服务器时出错?

java - 是否可以嵌套 Hazelcast Jet 管道,以便内部管道可以计算外部管道的结果?

java - Hazelcast 中 map 的编程属性设置?

使用 CLI 访问 Hazelcast