Distributed ID Generator
Overview
The distributed atomic sequence provided by the IgniteCacheAtomicSequence
interface is similar to the distributed atomic long,
but its value can only go up. It also supports reserving a range of values to avoid costly network trips or cluster updates
every time a sequence must provide a next value. That is, when you perform incrementAndGet()
(or any other atomic operation)
on an atomic sequence, the data structure reserves ahead a range of values, which are guaranteed to be unique across the
cluster for this sequence instance.
As a result, the atomic sequence is a suitable and efficient data structure for the implementation of a distributed ID generator. For instance, such a generator can be used to produce unique primary keys across the whole cluster.
Here is an example of how atomic sequence can be created:
Ignite ignite = Ignition.ignite();
IgniteAtomicSequence seq = ignite.atomicSequence(
"seqName", // Sequence name.
0, // Initial value for sequence.
true // Create if it does not exist.
);
Below is a simple usage example:
Ignite ignite = Ignition.ignite();
// Initialize atomic sequence.
final IgniteAtomicSequence seq = ignite.atomicSequence("seqName", 0, true);
// Increment atomic sequence.
for (int i = 0; i < 20; i++) {
long currentValue = seq.get();
long newValue = seq.incrementAndGet();
...
}
Sequence Reserve Size
The key parameter of IgniteAtomicSequence
is atomicSequenceReserveSize
which is the number of sequence values reserved
per node. When a node tries to obtain an instance of IgniteAtomicSequence
, a number of sequence values will be reserved
for that node and consequent increments of sequence will happen locally without communication with other nodes, until
the next reservation has to be made.
The default value for atomicSequenceReserveSize
is 1000
. This default setting can be changed by modifying the
atomicSequenceReserveSize
property of AtomicConfiguration
.
© 2024 GridGain Systems, Inc. All Rights Reserved. Privacy Policy | Legal Notices. GridGain® is a registered trademark of GridGain Systems, Inc.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.