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

Как hazelcast выполняет вытеснение записей из карты с точки зрения своей потоковой модели?

Я понимаю, что <min-eviction-check-millis> в конфигурации hazelcast определяет минимальное время в миллисекундах, которое должно пройти, прежде чем проверять, является ли раздел этой карты выселяемым или нет. Таким образом, в течение каждого настроенного интервала выселение будет выполняться на карте в соответствии с настроенной политикой выселения. У меня есть следующие вопросы, связанные с этой областью.

Q1. Выполняется ли операция выселения в потоке операции?

Q2. Будет ли операция выселения заблокирована для всего раздела, над которым она работает?

Q3. Нужно ли мне ожидать какого-либо снижения производительности, если я буду следовать значению по умолчанию 100 мс (что, я считаю, очень маленькое значение).

Q4. Как часто будет проводиться операция по выселению по следующему сценарию.

<map name="employees">
    <in-memory-format>BINARY</in-memory-format>
    <backup-count>1</backup-count>
    <max-idle-seconds>1800</max-idle-seconds>
    <eviction-policy>NONE</eviction-policy>
    <time-to-live-seconds>0</time-to-live-seconds>
    <min-eviction-check-millis>1000</min-eviction-check-millis>
    <max-size>0</max-size>
    <eviction-percentage>0</eviction-percentage>
    <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>

</map>

Обратите внимание, что, хотя политика и процент выселения не настроены, максимальное время простоя установлено на 1800 секунд.

Ответы на приведенные выше вопросы помогут мне принять обоснованное решение о значениях, которые будут использоваться для этих конфигураций в крупномасштабном развертывании.


Ответы:


1

min-eviction-check-millis - это атрибут политики максимального размера и выселения из-за максимального размера. Если вы установите min-eviction-check-millis = 0; затем поток раздела будет проверять размер при каждом обновлении. Если вы установите min-eviction-check-millis = 1000; тогда поток раздела будет проверять размер обновлений, если предыдущая проверка была раньше, чем за 1 секунду.

Если вы хотите, чтобы ваша карта более строго подчинялась политике максимального размера, установите его равным 0. Но при каждом обновлении у нее будут накладные расходы на проверку размера.

Q1. Выполняется ли операция выселения в потоке операции?

Он работает в потоках разделов. Потоки разделов выполняют операции на основе разделов (map.put, map.get, map.remove и т. Д.).

Q2. Будет ли операция выселения заблокирована для всего раздела, над которым она работает?

Не явная блокировка. Но пока поток раздела выполняет операцию выселения, другие операции с этим разделом будут заблокированы.

Q3. Нужно ли мне ожидать какого-либо снижения производительности, если я буду следовать значению по умолчанию 100 мс (что, я считаю, очень маленькое значение).

Это проверка размера, но да, это накладные расходы. Если вы допускаете, что ваша карта превышает максимальный размер; тогда вы можете установить более высокие значения.

Q4. Как часто будет проводиться операция по выселению по следующему сценарию.

Вы не установили политику выселения в этой конфигурации. Таким образом, максимальный размер не будет проверяться. min-eviction-check-millis или max-size здесь не действуют.

max-idle-seconds (также ttl) - это совсем другая история. Мы называем это истечением срока. Каждая операция получения сначала проверяет, истек ли срок действия записи. Но тоже периодически; некоторые записи выбираются случайным образом и проверяются, не истек ли срок их действия. Просроченные записи удаляются.

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

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

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

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

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

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

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

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