如何连接分布式Go应用程序?

I have two go apps running on different machines. I want them to communicate with each other in a native fast manner.

How do I do it better? I worked with Erlang and find very handy the way it's implemented there.

What are preferred ways to communicate between Go apps?

net/rpc - out of the box & fast

gRPC - fast and universal (imo the way to go)

net/rpc/jsonrpc - good when you need human readable messages or want to integrate go with client side js code

plain HTTP - overkill for communication between go programs, you'll have to plan routes and data encoding yourself, which is unnecessary effort

message queue - a bit slower approach, but you can benefit from advanced routing and persistence which they provide