Мы разрабатываем приложение с начальной загрузкой, которое развертывается в OpenShift 3. Приложение должно быть масштабируемым как минимум до двух модулей. Но мы используем внутренние кэши и другие «глобальные» данные (некоторые списки, некоторые карты…), которые должны быть одинаковыми (то есть общими) для всех модулей.
Есть ли способ добиться такого совместного использования данных а) службой, которая встроена в само приложение весенней загрузки (это подразумевает, что каждый модуль должен найти / узнать друг друга), или это необходимо в каждом случай автономной (потенциально также масштабируемой) службы кэширования?
а)
|---- Application ----|
| |
| |-------------| |
| | Pod 1 | * | |
| |----------^--| |
| | |
| |----------v--| |
| | Pod 2 | * | |
| |----------^--| |
| | |
| |----------v--| |
| | Pod n | * | |
| |-------------| |
| |
|----------------------
* "embedded cache service"
б)
|---- Application ----|
| |
| |-------------| |
| | Pod 1 | |-----\
| |-------------| | \
| | | \
| |-------------| | \ |-----------------------|
| | Pod 2 | |-----------| Cache Service/Cluster |
| |-------------| | / |-----------------------|
| | | /
| |-------------| | /
| | Pod n | |------/
| |-------------| |
| |
|----------------------
Как правило, если бы мы использовали memcached
или redis
, я думаю, что б) было бы единственным решением. Но как дела с Hazlecast?