我们开发了一个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 | |------/
| |-------------| |
| |
|----------------------
通常,如果我们使用memcached
或redis
,我认为b)是唯一的解决方案。但是Hazlecast怎么样?
答案 0 :(得分:1)
使用Hazelcast,您可以同时使用a和b。