Кросс-публикация в https://developer.jboss.org/thread/279735
Предположим, у нас есть несколько контейнеров докеров (каждый из которых имеет Java-приложения, в сущности, несколько JVM), каждый из которых использует один и тот же реплицированный кэш Infinispan либо в:
- Встроенный режим с использованием jgroups для обнаружения
- Режим сервера с использованием Docker Hub в качестве сервера Infinispan и клиентов, подключающихся через hotrod.
В любом случаевсе члены / клиенты кэша имеют хранилище файлов, из которого они предварительно загружаются при запуске (пример для серверного режима, аналогично xml для встроенного режима):
Через docker compose путь в хранилище файлов каждого контейнера(допустим, /var/tmp/server/OUR_CACHE.dat) монтируется с привязкой к одному и тому же файлу на хосте докера.
<paths>
<path name="cachestore.root" path="/var/tmp"/>
</paths>
...
<local-cache name="OUR_CACHE">
<expiration lifespan="-1"/>
<locking isolation="SERIALIZABLE" acquire-timeout="30000" concurrency-level="1000" striping="false"/>
<file-store relative-to="cachestore.root" path="server" max-entries="-1" purge="false" passivation="false" preload="true" fetch-state="true"/>
<memory>
<binary size="100000000" eviction="MEMORY"/>
</memory>
</local-cache>
Мой вопрос заключается в том, что - это механизм персистентности, разработанный для множественной репликацииклиенты кеша могут читать / записывать в / из одного и того же хранилища файлов без ошибок?
Насколько я понимаю, в режиме репликации значения ключейв конечном итоге станет согласованным по всей памяти узла.Но моя цель - обеспечить, чтобы несколько клиентских контейнеров, использующих одно и то же хранилище файлов для сохранения и предварительной загрузки, не оказывали неблагоприятного влияния на эту репликацию.
Если не рекомендуется использовать один и тот же файл .dat хранилища файлов, то чтоЛучше всего иметь GUID в пути к файлу для каждого контейнера в XML-файле.Имя хоста каждого контейнера-докера (который является containerId) уникально, но оно не будет известно до его развертывания, поэтому будет нелегко заполнить файл infinispan_server.xml статически значением "path".
Спасибо,
_Prateek