Возможно ли, что Sources.mapJournal () работает медленно для частого обновления IMap? - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь эмулировать рисование потока из Sources.mapJournal через IMap, который получает данные с устройства IoT. Обработка этого потока слишком медленная, и через 30-60 секунд я получаю большой накопленный результат.

Когда я начал часто обновлять IMap с небольшими данными (12 КБ на значение), исключение:

com.hazelcast.ringbuffer.StaleSequenceException: sequence: 123 слишком мало и хранилище данных отключено.

Я увеличил емкость журнала IMap по умолчанию в 10 раз. После этого он стал стабильным, но очень медленным. Аналогичная проблема возникает, когда я обновляю IMap с большими значениями (около 1,2 МБ за 5 секунд). Кроме того, у меня есть несколько подключенных устройств IoT, и у каждого из них есть свое задание Jet с тем же конвейером:

StreamStage<TagPosition> sourceSteam = 
    p.drawFrom(Sources.<TagPosition, String, TagPosition>mapJournal(
        Constants.IMAP_TAGS_POSITIONS_BUFFER,
        Util.mapPutEvents().and(entry -> ((String) entry.getKey()).startsWith(instanceNumber)),
        Util.mapEventNewValue(),
        JournalInitialPosition.START_FROM_OLDEST));

// Drain to SmartMap
sourceSteam.drainTo(SmartMapSinks.newTagPositionSink(instanceNumber));

Заранее спасибо!

UPD:

  • Размер журнала: EventJournalConfig.DEFAULT_CAPACITY * 10 = 100 000 (1 раздел)
  • Версия Jet - 0.7.2
  • Сериализуемые классы реализует com.hazelcast.nio.serialization.IdentifiedDataSerializable

1 Ответ

0 голосов
/ 25 января 2019

Проблема заключалась в использовании одного IMap (и журнала карт) несколькими заданиями. Журнал карты производил события как пакет с задержкой, но не как поток.

решаемая. Спасибо!

...