Согласованная распределенная схема для конкретного машинного распределения
Предположим, что machine1, machine 2 и machine 3 находятся в одном кластере когерентности.
Есть ли способ, которым я могу сказать, что в кластере я хочу, чтобы мой кеш размещался под машиной 1 и машиной 2, а не машиной 3? И есть ли какие-либо недостатки в этой структуре (проблемы с сетью, производительность и т. Д.)?
Благодарю.
РЕДАКТИРОВАТЬ: Я не хочу никаких отключенных узлов хранения. Каждый узел может хранить данные, но я хочу, чтобы они выбрали данные кэша, которые они хотят сохранить. Например: Cache1: M1 OK, M2 OK, M3 NOK, Cache2: M1 NOK, M2 OK, M3 OK и т. Д.
1 ответ
Что мы сделали в нашем кластере Coherence, так это запустили JVM, которые мы не хотим использовать в качестве "узлов кэша со свойством -Dtangosol.coherence.distributed.localstorage=false
установить в командной строке. Это позволяет этим JVM присоединяться к кластеру и получать доступ к кешу как к первоклассным элементам кластера, но на самом деле они не являются частью кеша.
Итак, в вашем примере все JVM на машине 3 указывают tangosol.coherence.distributed.localstorage
собственность как false
и машины 1 и 2, если работают с этим набором свойств true
(или без этого свойства по умолчанию true
), будет использоваться в качестве сервера кеша.
Редактировать:
Я не знаю конкретного способа реализации вашего обновленного вопроса. Можно попробовать предоставить разные coherence-cache-config.xml для каждой машины (чтобы каждая машина "видела" разные наборы кэшей), но эта страница, похоже, указывает на то, что это не очень хорошо поддерживается. Я хотел бы иметь лучший ответ.