跨多个容器共享对象

时间:2019-01-08 19:53:32

标签: spring-boot openshift hazelcast

我们开发了一个Spring-boot应用程序,该应用程序部署在OpenShift 3上。该应用程序应至少可扩展到两个Pod。但是我们使用内部缓存和其他“全局”数据(一些列表,一些地图...),这些数据对于所有Pod都应该相同(即共享)。

是否存在一种通过以下方式实现此类数据共享的方法:a)服务,该服务嵌入在spring-boot应用程序本身内(这意味着每个Pod需要互相查找/了解),或者b)每个服务都需要一个独立的(可能也是可扩展的)缓存服务?

a)

|---- 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怎么样?

1 个答案:

答案 0 :(得分:1)

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