Увеличьте размер раздела, чтобы включить больше данных в карту hazelcast

Я использую hazelcast как cache cluster.

У меня есть три хранилища карт для трех таблиц в mysql. Каждая таблица имеет 100000 записей. Я запускаю три экземпляра hazelcast, чтобы загрузить эти таблицы на мою карту с помощью different maps. Но вопрос.

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

Я использую три разных кода Java для загрузки этих таблиц. Размер моего раздела по умолчанию равен 271. Я искал ошибку, но ошибка не отображается, и данные всегда загружаются так же, как описано выше. Не могли бы вы помочь мне, в чем может быть дело.


person viren    schedule 20.10.2014    source источник


Ответы (1)


Можете ли вы зарегистрировать количество ключей, которые были загружены каждой из ваших реализаций MapLoader/MapStore при вызове MapLoader.loadAllKeys()?

Возможно, это прольет свет на ситуацию. Если число здесь не 100k, то проблема не внутри HZ.

person pveentjer    schedule 20.10.2014
comment
Так что, по крайней мере, мы знаем, что вы можете получить нужное количество ключей из БД; это твердое начало. Что вы имеете в виду под «экземпляром hazelcast для каждой таблицы»? Они не собираются образовывать кластер или вы дали им разные группы разделов или что-то в этом роде? - person pveentjer; 20.10.2014
comment
Я создал основную программу jabva для каждого экземпляра, чтобы представить его как структуру узла, поэтому в этом кластере есть три узла, как вы можете видеть в реализации конфигурации, он определен для каждого хранилища карт, поэтому эти три находятся на трех разных портах. - person viren; 20.10.2014
comment
МОИ проблемы заключаются в том, что когда я запрашиваю карту, на которой меньше данных, чем 100 КБ, и этот ключ не существует на карте, он дает мне ноль, но он должен был перейти в базы данных, чтобы получить запись и обновить карту. - person viren; 20.10.2014
comment
public Set‹Long› loadAllKeys() { Set‹Long› allKeys = null; try { allKeys = new HashSet‹Long›(); ResultSet rs = con.createStatement().executeQuery(String.format(выбрать идентификатор из города)); в то время как (rs.next()) { длинный ключ = rs.getLong (1); allKeys.добавить(ключ); } } catch (Exception ex) { } finally { } return allKeys; } - person viren; 20.10.2014
comment
МОЙ код здесь stackoverflow.com/questions/26396677/ - person viren; 20.10.2014
comment
Я обновил метод loadAllkeys с реализацией выше - person viren; 20.10.2014
comment
Я думаю, что 3 узла, которые вы создали, образуют кластер, если вы не сделали что-то явно, чтобы предотвратить это. Это означает, что ваше окружение — это нечто иное, чем вы думаете. Но это не должно изменить поведение того, что вы видите. Можете ли вы создать модульный тест, не зависящий от mysql, который доказывает наличие ошибки и отправить его на наш github? github.com/hazelcast/hazelcast/issues Один из наших инженеров может взглянуть на это. ? - person pveentjer; 20.10.2014
comment
Без sql я мог работать над этим, но когда я использовал sql, эта проблема все равно началась, я сделаю для нее тестовый пример, но если вы можете дать мне ссылку, где я могу поделиться своим текущим кодом, то это также можно просмотреть. Если это возможно для вас - person viren; 20.10.2014
comment
Я пытаюсь создать для него тестовый пример, но так как я очень новичок в броске ореха. Это стандартная реализация хранилища карт, которую я взял со страницы документации hazelcast. - person viren; 20.10.2014