Partitioning

"Divide And Conquer"

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...