Моя топология Ignite - это 2 сервера A и B с включенным собственным постоянством и два сервера C и D с отключенным постоянством.Существует кэш REPLICATED, он объявлен на серверах C и D в Java (также пробный декларативный способ в XML) и распространен на A и B. Загрузка класса Peer включена.
Тестовый случай тривиален.Кэш заполняется на C с помощью
cache.put(key, value)
Ключами являются java.lang.String
объекты, значения - это мои POJO, без каких-либо аннотаций полей (связанных с SQL или привязкой).
Затем на сервере Dзапись запрашивается с помощью
cache.containsKey(key)
или
Iterator<Entry<String, MyPOJO>> it = cache.iterator();
while (it.hasNext()) {
...
}
или
cache.query(new ScanQuery<String, MyPOJO>(null)).getAll().forEach(...);
Все эти методы не возвращают значение, которое было вставлено на сервер CУдивительно, но
cache.get(key)
возвращает значение.Если я подключаюсь к кластеру с помощью Ignite Visor (в качестве клиентского узла), он показывает объекты, хранящиеся на серверах A и B.
Это происходит только в том случае, если режим кэширования REPLICATED.Если значение изменено на PARTITIONED, все приведенные выше методы кэширования работают правильно и возвращают вставленные значения.
UPDATE
У меня нет XML-конфигурации под рукой, поэтому позвольте мнепросто опишите это.
Узлы A и B:
- определено имя сетки
- Определен IP-искатель Kubernetes с настроенным именем службы Kubernetes и портом
- включено собственное постоянство
Узлы C и D:
- имя сетки определено
- собственное постоянство не настроено
- Определен IP-искатель Kubernetes
- определена конфигурация кеша, она состоит из одной записи, моего собственного Java-класса, который расширяет org.apache.ignite.configuration.CacheConfiguration и вызывает setName (), setCacheMode () инесколько других методов из конструктора
Я постараюсь в ближайшее время предоставить точную конфигурацию XML.