如何为大型缓存值正确准备Apache Ignite



我有一个IgniteCache<String, byte[]>

这个缓存中的值可以很小,一直到几百兆字节。

从我阅读的文档来看,缓存项的值没有硬性限制。这让人放心。

但是,对于我的用例,有什么问题需要我担心吗?

例如,我需要为这种情况专门设置什么配置设置?

我不建议使用大于几MB的条目。它可能会导致各种网络或内存问题。

如果必须,您需要尝试使用尽可能大的值,然后调整设置,直到效果良好。我可以考虑的一件事是,将TcpCommunicationSpi.ackSendThreshold设置为一些小值,如4(默认值为32(,以避免这些大消息出现在队列中。但可能还有很多事情需要调整。

在内部,Ignite使用字节缓冲区来序列化数据,而这些缓冲区受到Integer.MAX_VALUE的限制,因此2GiB是最大缓存项大小。

一些Ignite API批量处理数据,在处理大条目时减少批量/页面大小是个好主意:

  • Query.pageSize(适用于扫描、SQL、连续查询(-默认值为1024
  • IgniteDataStreamer.perNodeBufferSizeperThreadBufferSize-默认值为512和4096

最新更新