2016-06-03 3 views

ответ

2

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

Пример: У меня есть IMap, и я хочу его во всех своих узлах (я не знаю, зачем вам это нужно, но, допустим, вы это делаете). Я могу сделать 2 шага.

  1. резервного копирования Count = (NumberOfNodes - 1)
  2. чтения для резервного копирования данных = истина

Так что теперь все ваши узлы имеют копию данных, и так как вы можете прочитать из резервной копии это похоже на реплицированную карту.

Вы можете играть с подсчетом резервного копирования или с подсчетом async-backup-count в зависимости от требуемого уровня согласованности. Нажмите here для получения более подробной информации.

+0

Но не все операции поддерживают чтение-от-резервное копирование (что-то связано с доступом без ключа), поэтому это часто вводит в заблуждение :) – noctarius

+0

Да, это нехорошее решение. Это обходное решение для системы с интенсивным чтением, в которой есть много связанных с ключом. :) – Reveka

5

Если у вас есть экземпляры каменного дерева N, сгруппированные вместе (N узлов), то ваши данные будут разделены на N частей. Каждая часть будет принадлежать одному узлу. Основываясь на том, что представляет собой сконфигурированный коэффициент репликации (по умолчанию 3), каждая часть также будет реплицироваться в некоторых других узлах. Таким образом, каждый узел будет иметь часть, принадлежащую ей, и некоторые другие части, которые являются просто репликой.

2

Реплицированные карты Hazelcast намного превосходят EHcache, они будут реплицировать всю карту на каждом узле (JVM) в вашем кластере.

Кроме того, вы можете использовать разбитую карту, которая будет разделять ваши данные на всех JVM, но отображается клиенту, как если бы это была одна карта.

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

Хорошее эмпирическое правило для определения размера кучи вашего кластера заключается в том, что вы получаете 1/3 для данных, 1/3 для резервного копирования другого узла (при условии, что количество резервных копий равно 1) и 1/3 для обработки JVM.

Смежные вопросы