跨多个容器共享对象
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 | |------/
| |-------------| |
| |
|----------------------
通常,如果我们使用 memcached
或 redis
,我认为 b) 将是唯一的解决方案。但是 Hazlecast 怎么样?
使用 Hazelcast,您可以同时使用 a 和 b。
- 对于场景 a,假设您在 OpenShift 上使用 k8s,您可以使用 Hazelcast Kubernetes 发现插件,以便 pods 部署在同一个 k8s 集群中发现自己并形成集群:https://github.com/hazelcast/hazelcast-kubernetes
- 对于方案 b,Hazelcast 也有一个 OpenShift 映像,需要企业订阅:https://github.com/hazelcast/hazelcast-openshift. If you need open-source version, you can use Hazelcast Helm Chart to deploy data cluster separately: https://github.com/helm/charts/tree/master/stable/hazelcast
我们开发了一个部署在 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 | |------/
| |-------------| |
| |
|----------------------
通常,如果我们使用 memcached
或 redis
,我认为 b) 将是唯一的解决方案。但是 Hazlecast 怎么样?
使用 Hazelcast,您可以同时使用 a 和 b。
- 对于场景 a,假设您在 OpenShift 上使用 k8s,您可以使用 Hazelcast Kubernetes 发现插件,以便 pods 部署在同一个 k8s 集群中发现自己并形成集群:https://github.com/hazelcast/hazelcast-kubernetes
- 对于方案 b,Hazelcast 也有一个 OpenShift 映像,需要企业订阅:https://github.com/hazelcast/hazelcast-openshift. If you need open-source version, you can use Hazelcast Helm Chart to deploy data cluster separately: https://github.com/helm/charts/tree/master/stable/hazelcast