Interface IdGenerator

All Superinterfaces:
All Known Implementing Classes:
ClientIdGeneratorProxy, IdGeneratorProxy

public interface IdGenerator
extends DistributedObject

The IdGenerator is responsible for creating unique ids (a long) in a cluster. In theory a IAtomicLong.incrementAndGet() could be used to provide the same functionality. The big difference is that the incrementAndGet requires one or more remote calls for every invocation and therefor is a performance and scalability bottleneck. The IdGenerator uses an IAtomicLong under the hood, but instead of doing remote call for every call to newId(), it does it less frequently. It checks out a chunk, e.g. 1..1000 and as long as it has not yet consumed all the ids in its chunk, then no remote call is done. It can be that ids generated by different cluster members will get out of order because each member will get its own chunk. It can be that member 1 has chunk 1..1000 and member 2 has 1001..2000. Therefore, member 2 will automatically have ids that are out of order with the ids generated by member 1.

Method Summary
 boolean init(long id)
          Try to initialize this IdGenerator instance with the given id.
 long newId()
          Generates and returns a cluster-wide unique id.
Methods inherited from interface com.hazelcast.core.DistributedObject
destroy, getId, getName, getPartitionKey, getServiceName

Method Detail


boolean init(long id)
Try to initialize this IdGenerator instance with the given id. The first generated id will be 1 greater than id.

true if initialization succeeded, false if id is less than 0.


long newId()
Generates and returns a cluster-wide unique id. Generated ids are guaranteed to be unique for the entire cluster as long as the cluster is live. If the cluster restarts, then id generation will start from 0.

the cluster-wide new unique id

Copyright © 2015 Hazelcast, Inc.. All Rights Reserved.