Partitioning is a strategy commonly used to aid in scalability. You divide a large problem into smaller pieces that are demonstrably independant of each other. Because they are independant of each other, these problems may be solved concurrently with no contention on any shared resource.
Many existing clustering solutions require that a cluster is manually partitioned at configuration time and that this structure remains static throughout the lifetime of the system.
Fortunately for this demo, WADI partitions its problem space dynamically. A fixed number of Partitions is specified at configuration time. Ownership of these is then renegotiated dynamically between a cluster's nodes as they join and leave the cluster.
We can watch this happening in a very simple WADI demo.We start a red node. As it comes online WADI outputs e.g. the following:
2005/12/07 16:30:54:444 GMT [DEBUG] SimplePartitionManager#red - -allocating 72 partitions
Then we start a green node. As it comes up the red node says:
2005/12/07 16:36:36:720 GMT [DEBUG] DIndex#red - -node joined: green
2005/12/07 16:36:36:988 GMT [DEBUG] SimplePartitionManager#red - -released 36 partition[s] to green
and the green node says:
2005/12/07 16:36:36:979 GMT [DEBUG] SimplePartitionManager#green - -acquired 36 partition[s] from red
2005/12/07 16:36:36:996 GMT [DEBUG] DIndex#green - -node joined: red
so you can see that red has shared its partitions with the new member, green.
If you shutdown green (gently via e.g. ctl-c), you will see it say:
2005/12/07 16:40:01:750 GMT [DEBUG] SimplePartitionManager#green - -released 36 partition[s] to red
and red says:
2005/12/07 16:40:01:696 GMT [DEBUG] DIndex#red - -node left: green
2005/12/07 16:40:01:707 GMT [DEBUG] SimplePartitionManager#red - -acquired 36 partition[s] from green
This ability to share responsibility for servicing a fixed set of Partitions is at the very centre of WADI's architecture.
Try starting a number of different WADI nodes and watching the sharing of Partitions across the cluster...