Hello Abhishek,
There are 2 map variants (Consistent and EventuallyConsistent) that get used the most.
There is a Set primitive (DistributedSet) that as you can imagine simply builds on top of the ConsistentMap primitive.
AtomicCounter is equivalent to
AtomicLong in a distributed setting and similarly AtomicValue is the distributed equivalent of
AtomicReference.There is also a Queue primitive (DistributedQueue) that supports a producer-consumer use case with exactly-once delivery semantics and non-blocking consumers via long polling support.
It is relatively straightforward to add a newer primitive if one desires. The underlying implementation that makes these data structures possible is a Replicated State Machine backed by Raft consensus. The implementation in ONOS partitions (or shards) the key space and runs multiple such state machines, one for each partition. So in a given ConsistentMap, keys a distributed (randomly) onto different partitions and each partition maintains its state in a state machine backed by Raft.
If you can describe the data structure you want to implement, I will be able to provide some specific pointers.
Madan.