First, some background:<p>In our distributed microservice-based stack, we currently use JSON-over-RESTful-HTTP exclusively for the internal APIs exposed by our microservices. Apps, including browser front ends, talk to each other using HTTP.<p>In particular, we&#x27;ve come to realize is that it&#x27;s really a poor man&#x27;s RPC, and that REST has no practical utility in internal APIs, which benefit from a service&#x2F;verb perspective, but not from a resource-oriented one.<p>Some current issues we want to solve:<p>- Performance. HTTP&#x2F;1.1 is not suited for tiny RPC payloads where you want seamless pipelining. HTTP&#x2F;2 is starting to look good as a much more performant transport, however.<p>- Wire formats. JSON is increasingly an expensive format to shuffle data around in.<p>- &quot;Service discovery&quot;. A client wants simply to communicate with a bunch of services (preferably using the same connection) — it shouldn&#x27;t concern itself with where those services run or how.<p>- Fault tolerance. Clients should be resilient against failing services and networking blips.<p>- Latency. Right now every HTTP request goes through HAProxy. Adds complexity, adds latency. We&#x27;d like microservices to talk to directly.<p>We could solve these issues for ourselves in a proprietary way. But we&#x27;re not in the business of reinventing wheels, nor are we in the business of creating libraries. Developing the required glue from scratch in all the languages we use (Go, Node.js and Ruby currently) would consume resources we&#x27;d like to devote to app code.<p>What do devs on HN use?
Ask HN: What do you use for microservice RPC?