Spread ushards load to more nodes
authorRobert Newson <robert.newson@cloudant.com>
Wed, 6 Mar 2013 14:29:13 +0000 (08:29 -0600)
committerRobert Newson <robert.newson@cloudant.com>
Thu, 7 Mar 2013 18:47:21 +0000 (12:47 -0600)
commit06e0baea96710752d1514b1ad7b078537743dbb9
tree0461ce0439596b0d4d971cf56f8a452df203b7f7
parent8740fb465cdb51b1637d6da541c0ae2546769dc0
Spread ushards load to more nodes

In some cases, notably q=1 databases, the current ushards algorithm
will always choose the same replica (because of the lists:sort and
order-preserving orddict). This causes a severely skewed load profile
if you have lots of these cases.

This patch rotates each group of nodes using the crc32 of the database
name, spreading out the load pretty evenly.

The patch is a little obscure because ushards still has remnants of
previous work (breaking nodes into the local, same zone, different
zone, but then deliberately merging local and same zone back together
because that was a silly idea).

BugzID: 17801
src/mem3.erl