Norbert is a library which provides easy cluster management and cluster aware client/server networking APIs. Implemented in Scala, Norbert wraps ZooKeeper and Netty and uses Protocol Buffers for transport to make it easy to build a cluster aware application. A Java API is provided and pluggable routing strategies are supported with a consistent hash strategy provided out of the box.
Sample code for a Java based client and server can be found here and here.