Hacker News new | ask | show | jobs
by grizzles 3346 days ago
Imo it was mainly poor language / framework support for asynchronicity. That's not really an issue anymore.
1 comments

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,....?
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.