So I took an early stab at this. It uses netty for both server and client. A region server has two different ports (right now). One for admin and one for data with a protobuf representation. All servers have a thread pool for IO (getting data in and out, parsing protobuf) and a thread pool for performing operations (Scanning, getting, deleting, etc). Thread pools are memory aware so slow queries shouldn't result in OOME's.
All communication takes place through a wrapped protocol buffer protocol:
[32 bit length field, protobuf data]
This is pretty easy to parse and should allow native clients to be written very easily.
All dependencies are injected into the constructor of NRegionServer and NMasterServer. This should allow us to test things a little bit easier. I had to make a couple of changes to the Zookeeper listeners for this.
I envision the client having two implementations. The async client that just gives off futures like https://github.com/stumbleupon/asynchbase does currently. The second implementation will just be a wrapper for the async client that waits for all futures to complete before returning.
Right now nothing works and nothing is really even close. I just wanted to put this up to get the ball rolling on discussion and see if people are even interested in this still.