跨多个容器共享对象

Share objects across multiple containers

我们开发了一个部署在 OpenShift 3 上的 spring-boot 应用程序。该应用程序应至少可扩展到两个 pods。但是我们使用内部缓存和其他 "global" 数据(一些列表,一些地图......),这些数据对于所有 pods.

应该是相同的(即共享)

有没有办法通过 a) 嵌入在 spring-boot 应用程序本身内部的服务来实现这种数据共享(这意味着每个 pod 需要 find/know 彼此)还是 b) 在每种情况下都需要一个独立的(也可能是可扩展的)缓存服务?

一)

|---- Application ----|
|                     |
|   |-------------|   |
|   | Pod 1  | *  |   |
|   |----------^--|   |
|              |      |
|   |----------v--|   |
|   | Pod 2  | *  |   |
|   |----------^--|   |
|              |      |  
|   |----------v--|   |
|   | Pod n  | *  |   |
|   |-------------|   |
|                     |
|----------------------
* "embedded cache service"

b)

|---- Application ----|
|                     |
|   |-------------|   |
|   | Pod 1  |    |-----\
|   |-------------|   |  \
|            |        |   \
|   |-------------|   |    \  |-----------------------|
|   | Pod 2  |    |-----------| Cache Service/Cluster |
|   |-------------|   |     / |-----------------------|
|            |        |    /
|   |-------------|   |   /
|   | Pod n  |    |------/
|   |-------------|   |
|                     |
|----------------------

通常,如果我们使用 memcachedredis,我认为 b) 将是唯一的解决方案。但是 Hazlecast 怎么样?

使用 Hazelcast,您可以同时使用 a 和 b。