【hazelcast入门系列之八】hazelcast 的 IAtomicLong 使用

本文介绍 hazelcast 中 IAtomicLong 的使用。

IAtomicLong 的基础使用

首先放上基础代码
示例代码
代码主要包含两部分:

  1. hazelcast IAtomicLong 的基础使用
  2. 使用 IFunction 操作 IAtomicLong

第一部分可以看出分布式的 IAtomicLong 与 jdk的性能差距,同样处理一百万数据,前者消耗 13622 毫秒,后者消耗 10 毫秒,选用时需要注意该特性。

第二部分是使用接口可以将自定义的操作发到 hazelcast 服务器去执行,性能更好。
通过代码可以看到不同方法执行 IFunction 的效果:

  • apply 执行 IFunction 的逻辑,但是不改变原值,将计算后的值返回。
  • alter 执行 IFunction 的逻辑,改变原值,不需要返回值。
  • alterAndGet 执行 IFunction 的逻辑,改变原值,将改变后的值返回。
  • getAndAlter 执行 IFunction 的逻辑,改变原值,然后将原值返回。

为什么要用 Functions

由于期望对 IAtomicLong 的操作应该是原子性的,如果操作 atomicLong.set(atomicLong.get() + 2), 那么读与写是分开的,可能造成的结果与预期不一样,所以通过 IFunction 发送到 hazelcast 节点执行。
通过使用 Functions ,不是将数据放到代码中,而是将逻辑发送给数据,从而使 IAtomicLong 获得了数据的可扩展性。

脑裂保护

脑裂保护可以分为写、读写、读三类操作的保护。
IAtomicLong 的脑裂情况可以采取下面这个配置项进行避免。

配置项含义备注
quorum-refIAtomicLong依赖的quorum
通过上面的两个代码例子,希望能够对 hazelcast 中的 IAtomicLong 有一定的认识。

本文标题:【hazelcast入门系列之八】hazelcast 的 IAtomicLong 使用

文章作者:roytrack

发布时间:2019年03月04日 - 20:03

原始链接:http://www.roytrack.com/2019/03/id12/

许可协议: 转载请保留原文链接及作者。