填充内存数据网格 Hazelcast 的最快方法
The fastest way to populate a In Memory Data Grid Hazelcast
填充 Hazelcast 数据网格的最快方法是什么。阅读文档我可以看到几个变体:
- 使用多线程和IMap.set
- 使用多线程和IMap.putAll
- 使用分布式执行以开始从所有参与者填充网格。
我的性能基准显示 IMap.putAll 比 IMap.Set 快。但在 Hazelcasty 文档中指出 IMap.putAll 不保证所有内容都将自动插入。
有人可以澄清一下用数据填充数据网格的最快方法是什么吗?
变体 3 好吗?
我会看到相同的三个选项。无论如何,正如您提到的那样,选项二并不能保证所有内容都以原子方式放入地图中,但是如果您只是加载数据并等待所有线程使用 IMap::putAll 完成加载数据,您应该没问题。
除此之外,IMap::set 将是备选方案。在任何情况下,您都希望多线程加载过程。我会尝试使用不同的线程数,通常建议从客户端加载数据以使节点空闲以进行存储操作。
我个人从未对您的第三个选项进行基准测试,无论如何它也是可能的。只是不确定额外的工作是否值得。
您想加载多少您担心加载速度慢的数据?您是否已经知道加载速度很慢?您是否使用 Java 序列化(这是一个巨大的性能杀手)?您是否使用索引(那些必须在放置数据时生成)?
通常有很多优化可以用来加速,不仅是数据加载,还有正常操作。
填充 Hazelcast 数据网格的最快方法是什么。阅读文档我可以看到几个变体:
- 使用多线程和IMap.set
- 使用多线程和IMap.putAll
- 使用分布式执行以开始从所有参与者填充网格。
我的性能基准显示 IMap.putAll 比 IMap.Set 快。但在 Hazelcasty 文档中指出 IMap.putAll 不保证所有内容都将自动插入。
有人可以澄清一下用数据填充数据网格的最快方法是什么吗?
变体 3 好吗?
我会看到相同的三个选项。无论如何,正如您提到的那样,选项二并不能保证所有内容都以原子方式放入地图中,但是如果您只是加载数据并等待所有线程使用 IMap::putAll 完成加载数据,您应该没问题。
除此之外,IMap::set 将是备选方案。在任何情况下,您都希望多线程加载过程。我会尝试使用不同的线程数,通常建议从客户端加载数据以使节点空闲以进行存储操作。
我个人从未对您的第三个选项进行基准测试,无论如何它也是可能的。只是不确定额外的工作是否值得。
您想加载多少您担心加载速度慢的数据?您是否已经知道加载速度很慢?您是否使用 Java 序列化(这是一个巨大的性能杀手)?您是否使用索引(那些必须在放置数据时生成)?
通常有很多优化可以用来加速,不仅是数据加载,还有正常操作。