Hacker News new | ask | show | jobs
by pjmlp 3346 days ago
So how is the modern way to work around issues like network partitions, servers not responding, going off and on on network connections, duplicate answers,....?
2 comments

Futures-oriented programming - helped by the "async" or "generators" support in quite a few modern languages. Wrap timeouts and retries around everything, and process the timeout errors accordingly.

RPC doesn't mean that a remote function call looks exactly like a local one. That was a mistake. Modern RPC systems return composable futures which make it trivial to do timeouts and retries, send off many requests at once and wait for all/some of them to return, and so on and so forth.

If you're doing something that shouldn't happen more than once, generate a transaction ID to identify it by.

https://web.stanford.edu/~ouster/cgi-bin/papers/rifl.pdf

This paper says that exactly once execution of an RPC is possible. I have no idea if grpc does this or not.