Implement consistent hashing router.

Make UserAction use this router will be the next patch.