Nano Hash - криптовалюты, майнинг, программирование

Производительность Hazelcast IMap

Пользуюсь фундук 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(.....)

Благодарю.


  • Число резервных копий 5 означает 6 копий (мастер + 5). Если у вас всего 5 узлов, значит, вы запросили на одну копию слишком много. 19.10.2017
  • А чтение из резервной копии доступно только для доступа на основе ключа, но не для запросов. 19.10.2017
  • entrySet() вообще рискованно, потому что это все, когда IMap разбивается на разделы, как правило, потому, что он большой. Какую проблему ты пытаешься решить ? Найти все ключи по частичному ключу? Что ваш map(....) с ними делает 19.10.2017
  • noctarius, правильно ли я вас понял, что при чтении из резервной копии, если я сделаю вызов map.entrySet (), данные будут получены с этого узла, потому что это доступ на основе ключа? нет сетевого вызова 19.10.2017
  • Какую проблему ты пытаешься решить ? Чтобы найти ключи по частичному ключу? Вы можете искать по ключу, поэтому entrySet() может быть entrySet(predicate), что уменьшит банковский перевод 24.10.2017

Ответы:


1

Имейте в виду, что флаг readBackupData работает только в том случае, если вы выполняете запрос изнутри члена, поэтому, если вы используете HazelcastClient, он не будет читать из резервной копии.

27.10.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..