高增量“增量”数值运算方式

时间:2018-03-14 19:55:47

标签: ignite

我有一个float(不是int)的分布式缓存。我的进程会经常增加这些浮点数并偶尔访问它们。

如果它是本地的,原子浮点数据结构(或浮点加法器,如果有的话)有增量方法可能是最好的方法。非阻塞和异步是理想的,因为只要每个增量最终都进行,增量序列无关紧要。

增加数值以实现高吞吐量的最佳方法是什么?

我目前的方法是:

  1. 批量处理不同键的几个增量操作
  2. IgniteCache中使用invokeAll方法,传入CacheEntryProcessor,其中包含每个键的增量值。
  3. CacheAtomicityMode配置设置为ATOMIC
  4. 这是最好的方式吗?

    是否有任何我应该注意的配置以提升性能,例如使用二进制格式或堆内存或避免不必要的序列化?

1 个答案:

答案 0 :(得分:0)

我认为你肯定是在正确的轨道上。

默认情况下将使用二进制格式,因此您不需要任何特殊配置。我不认为你应该担心浮动的序列化,所以我不会配置堆上缓存,除非你遇到性能问题。

我还建议您查看IgniteAtomicSequence的内部实施,因为它可能会为您提供更多有用的想法。

最后,我建议将其实现为Ignite service,这样您就可以提供针对此功能量身定制的自定义API。