2016-05-11 2 views
5

В Master Hazelcast книге под «17.4.1 секциями в курсе операций» он заявляет:Hazelcast счетчики разделов и нить параллелизм

Для выполнения разделов-зависимых операций, массив операций нитей создается.

Один поток операций выполняет операции для нескольких разделов;

Каждый раздел относится только к одной рабочей нити.

Предположим, что у меня есть номер из 271 разделов по умолчанию в кластере из 17 узлов, каждый из которых имеет 16 потоков разделов. Распределяя разделы по кластеру, это означает, что у всех разделов будет один поток, связанный с ним, и каждый поток будет иметь только 1 раздел (для меня это представляется оптимальным).

Игнорирование резервных копий и кеш-кешей при создании экземпляра IMap, означает ли это, что я могу выполнять только одну параллельную операцию ввода/получения на каждом сегменте карты в кластере? Если я добавлю MapStore, значит ли это, что я могу использовать только 271 одновременных операций с моей бэкэнд-базой, поскольку нет способа сделать async MapStores?

Моей причиной для этого является то, что у меня есть очень параллельное веб-приложение, и я недавно переключил хранилище данных, чтобы работать с Hazelcast IMap перед ним. Приложение принимает тысячи одновременных соединений, и почти каждый отдельный запрос выполняет хотя бы операцию получения с распределенной карты. Я вижу много этих ошибок:

com.hazelcast.core.OperationTimeoutException: No response for 20000 ms. Aborting invocation! Invocation{serviceName='hz:impl:mapService', op=com.hazelcast.map.impl.operation.GetOperation{identityHash=1003806362, serviceName='hz:impl:mapService', partitionId=244, replicaIndex=0, callId=55212219, invocationTime=1462913274676 (Tue May 10 20:47:54 UTC 2016), waitTimeout=-1, callTimeout=10000, name=..., name=...}, partitionId=244, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=1, callTimeout=10000, target=Address[10.0.2.221]:5701, backupsExpected=0, backupsCompleted=0, connection=Connection [/10.0.2.219:5701 -> /10.0.2.221:14565], endpoint=Address[10.0.2.221]:5701, alive=true, type=MEMBER} No response has been received! backups-expected:0 backups-completed: 0

Может ли это быть просто вызванное MapStore блокирование раздела нить, пока она пытается извлечь из базы данных? Я должен также отметить, что, пока он говорит No response for 20000 ms, 20-е годы не прошли.

Я бегу Hazelcast 3.6.2 на Java 8.

+0

Вы изменили файл hazelcast.operation.call.timeout.millis из-за вашего таймаута 20 секунд вместо обычных 2x60 секунд. – pveentjer

ответ

2

gnoring резервных копий и почти кэшей, когда я создаю экземпляр IMap, это значит я могу только когда-либо иметь 1 одновременно положить/выполнить операцию, выполняемую на каждом разделе карты в кластере?

Исправить. Таким образом, может быть, что раздел 25 карты a и map b занят обработкой операции для карты b, и поэтому операция для карты должна ждать.

Двигаясь дальше, если я придаю MapStore, делает это означает, что я могу только когда-либо иметь 271 одновременных операции работают против моей серверной базы данных, так как нет никакого способа сделать асинхронную MapStores?

Для написания через mapstore -> да. Но я не такой семейный человек с файловой машиной writebehind (async) mapstores.

Может ли это быть просто вызвано MapStore блокирование раздела нить, пока она пытается извлечь из базы данных? Я должен также отметить, что, пока он говорит «Нет ответа» за 20000 мс, 20-е не прошло.

Это вполне может быть причиной.

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