Apache Ignite(四):基于Ignite的分布式ID生成器

1.Apache Ignite的分布式原子化类型

\

JDK在1.5版本之后,提供了java.util.concurrent包,其中java.util.concurrent.atomic子包中包含了对于单一变量的线程安全的支持lock-free的编程实现。该包中的类,比如AtomicLong,提供了和Long类型相对应的原子化操作,比如一些increment方法,基于这些功能,是可以开发出单JVM的序列生成器这样的功能的,但是对于分布式环境,则无能为力。

\

在Ignite中,除了提供标准的基于键-值的类似于Map的存储以外,还提供了一种分布式数据结构的实现,其中包括:IgniteAtomicLong, IgniteSet, IgniteQueue, IgniteAtomicReference, IgniteAtomicSequence, IgniteCountDownLatch, IgniteSemaphore,这些类除了提供和JDK相同的功能外,就是增加了对分布式环境的支持,也就是支持集群范围内的原子化操作。

\

鉴于本文重点是讨论分布式ID生成器,所有下文的重点在于IgniteAtomicSequence。

\

2.IgniteAtomicSequence

\

IgniteAtomicSequence接口提供了分布式的原子性序列,类似于分布式原子性的Long类型,但是他的值只能增长,他特有的功能是支持预留一定范围的序列值,来避免每次序列获取下一个值时都需要的昂贵的网络消耗和缓存更新,也就是,当在一个原子性序列上执行了incrementAndGet()(或者任何其他的原子性操作),数据结构会往前预留一定范围的序列值,他会保证对于这个序列实例来说跨集群的唯一性。
这个类型的使用是非常简单的,相关代码如下:

Ignite ignite = Ignition.start();\IgniteAtomicSequence seq = ignite.atomicSequence(\"seqName\
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值