填充内存数据网格 Hazelcast 的最快方法

The fastest way to populate a In Memory Data Grid Hazelcast

填充 Hazelcast 数据网格的最快方法是什么。阅读文档我可以看到几个变体:

  1. 使用多线程和IMap.set
  2. 使用多线程和IMap.putAll
  3. 使用分布式执行以开始从所有参与者填充网格。

我的性能基准显示 IMap.putAll 比 IMap.Set 快。但在 Hazelcasty 文档中指出 IMap.putAll 不保证所有内容都将自动插入。

有人可以澄清一下用数据填充数据网格的最快方法是什么吗?

变体 3 好吗?

我会看到相同的三个选项。无论如何,正如您提到的那样,选项二并不能保证所有内容都以原子方式放入地图中,但是如果您只是加载数据并等待所有线程使用 IMap::putAll 完成加载数据,您应该没问题。

除此之外,IMap::set 将是备选方案。在任何情况下,您都希望多线程加载过程。我会尝试使用不同的线程数,通常建议从客户端加载数据以使节点空闲以进行存储操作。

我个人从未对您的第三个选项进行基准测试,无论如何它也是可能的。只是不确定额外的工作是否值得。

您想加载多少您担心加载速度慢的数据?您是否已经知道加载速度很慢?您是否使用 Java 序列化(这是一个巨大的性能杀手)?您是否使用索引(那些必须在放置数据时生成)?

通常有很多优化可以用来加速,不仅是数据加载,还有正常操作。