对于频繁更新IMap,Sources.mapJournal()可能会变慢吗?

时间:2019-01-17 11:14:15

标签: hazelcast-jet

我正在尝试通过IMap模拟Sources.mapJournal的流图,该IMap从IoT设备接收数据。该流的处理速度太慢,并且30-60秒后我得到了很大的累积结果。

当我开始使用少量数据(每个值12 KB)频繁更新IMap时,例外是:

  

com.hazelcast.ringbuffer.StaleSequenceException:sequence:123太小,数据存储被禁用。

我将IMap日记帐的默认容量增加了10倍。此后它变得稳定,但是非常缓慢。类似的问题是当我使用较大的值(每5秒约1.2 MB)更新IMap时。另外,我有几个已连接的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 :(得分:0)

问题在于多个作业使用单个IMap(和地图日志)。 Map日志产生的事件像一个批处理一样具有延迟,但不是流。

已解决。谢谢!