A nonblocking RPC server based on Netty should be more scalable than the current implementation.
We should provide two mechanisms for interfacing the RPC server to the implementations:
1) "Blocking" RPC implementations run inside a worker threadpool. Implementators would not know that they're working in a non-blocking context.
2) "Event-driven" RPC implementations that receive requests and some kind of request context. They are responsible for eventually calling context.respond(response) or somesuch. This would allow more scalable interaction with downstream services.
I propose we focus on (1) first.