Rethinking RPC Communication for Microservices-based Applications