Пользуюсь фундук 3.8.6. Существует IMAP {Key, Value} со следующими настройками:
mapConfig.setBackupCount(5);
mapConfig.setReadBackupData(true);
Ключ
long userId;
long contentId;
также есть 5 узлов, где есть данные. Насколько я понимаю, в соответствии с настройками каждый узел будет иметь все данные. Таким образом, я превращаю распределенную карту в реплицированную, чтобы увеличить скорость операций получения и не выполнять сетевые вызовы.
давайте изображение, мне нужно получить все данные для пользователя по идентификатору. в обычном режиме я бы написал следующий код:
EntryObject eo = new PredicateBuilder().getEntryObject();
Predicate predicate = eo.key().get("this.userId").equal(userId);
map.values(predicate).stream().map(.....)
этот код будет выполнен на всех узлах, а результат будет возвращен узлу, который выполняет вызов. Правильно ли я понимаю, что в случае настроек «setReadBackupData (true)» запрос не будет отправлен на другие узлы, и все данные будут найдены на узле, который делает этот запрос? или в этом случае, чтобы избежать сетевых вызовов, я просто должен использовать что-то вроде этого:
map.entrySet().stream()
.filter(entry->entry.getKey().getUserId().equals(userId))
.map(.....)
Благодарю.