4 ms·
Of course you can have exactly-once delivery. I mean... we know how to construct software that will transfer money from one account to another, exactly once. It
by twawaaay 4y ago
Of course you can have exactly-once delivery. I mean... we know how to construct software that will transfer money from one account to another, exactly once. It really isn't rocket science but it does require a little bit of understanding of various tradeoffs that you are making.
It is a bit like saying that we can't have straight lines. Of course, if you zoom in far enough to see individual atoms, every physical surface will look jagged. But in practical terms we can have straight lines and surfaces to a good enough approximation. It means specifying what "straight" means and figuring out how to measure it and how to produce "straight" according to specification and measurements.
Engineering is about knowing and making tradeoffs. Every device we have ever created has to contend with limitations of physical existence. Engineering is about accomplishing goals in presence of those limitations.
A person who says "you can't deliver a message exactly once" clearly lives in an idealised, theoretical world. I would urge to leave your ivory tower for a second and see how engineers in real world accomplish what you say is not possible.
I get that this knowledge is useful -- but don't publish it as gospel. "You cannot have exactly-once delivery" is true, but not the same kind of truth as "you can't travel faster than light". No engineering can get you to travel faster than light. But engineering can get you as close to exactly-once delivery as you want to the point where the original statement stops being meaningful for real life problems.
- skybrian 4y agoYou can’t do any transfer by any particular deadline if the network is down. Assuming the network will recover in time may be a reasonable assumption sometimes, though.
- deleted 4y ago[deleted]
- dllthomas 4y agoIf "the network might be down arbitrarily long" is a possibility, you cannot have at least once delivery, either.
- preseinger 4y agotechnically you can, as at least once delivery is satisfied by not delivering :)
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- urbandw311er 4y agoHave you actually read the article? The title is just a summary and the author fully acknowledges that their argument is essentially based around edge cases, not that this in any way diminishes it for me. It’s just an interesting piece of theorising. I think your comment (particularly your 4th paragraph about ivory towers etc) comes across as overly harsh and a little aggressive.
- bob1029 4y ago> I mean... we know how to construct software that will transfer money from one account to another, exactly once. Assuming you are talking about transferring between institutions, there is actually no single piece of software with this responsibility. The business processes are effectively what provide these guarantees (typically by way of another 3rd party). In order to accomplish this, added latency (settlement time) is necessarily introduced into the process.
- monsieurbanana 4y agoI don't understand where the anger comes from, the article makes it clear it's talking about distributed systems theory. Like someone else said, you can use at least once delivery and handle duplicate messages, but that's not quite the same as a distributed system guaranteeing that a message will be delivered exactly once.
- junon 4y ago.... they said, misunderstanding the article entirely. This isn't an opinion. This is a fact of distributed systems. An axiom, if you will.
- convolvatron 4y agothere is no distributed consensus. however we can reach consensus with an _arbitrarily high_ probability by adding additional machinery. until the point where is equally likely that the earth will simply fall into the sun one day. so while this is a hugely important result, it doesn't stop us from building useful systems.
- preseinger 4y agoYou can get exactly-once in a system if you design for consistency (in the CAP sense) and use a consensus protocol. those systems don't offer availability (in the CAP sense) by definition. and I guess when people say exactly-once is impossible they're speaking about systems that offer availability.
- junon 4y agoNo, you can't get exactly once guarantees, in any system. This is an axiom. There will always be a failure mode somewhere that puts you in either at least once or at most once mode. This has nothing to do with CAP.
- twawaaay 4y agoThink you may want to read about what an axiom is. An axiom, by the very definition, cannot be proven. Since the mathematical impossibility of exactly once delivery can be proven (there exists a proof), it means it is not an axiom. Now, a mathematical proof is different from physical reality. In mathematics 10^(10^(10^10)) is different from infinity while in reality it is not. In mathematics you can halve distance between you and a point every second and you will never reach it while in physical world you will reach it in less than a minute. In mathematics you can win any lottery however low your win chance is by just trying it an infinite number of times. In real world you can't. An anecdote (funny regardless of whether true) says that CIA cryptographers created once an unbreakable encryption scheme using one time pad. One time pad is mathematically proven to be impossible to break. USSR cryptographers promptly learned to decipher all cryptograms. Apparently, when combining plaintext and one time pad the machine would generate different voltages depending on the bit used in the pad, so rather than output 0V for false and 1V for true, the output became 0.9V or 1.1V for true and 0V or 0.1V for false depending on what bit was used in the pad. This shows how idealised world is different from engineering reality and forgetting about it can lead to large errors in judgment. The same kind of errors in judgment as people saying "you cannot have exactly-once delivery". Programs work in real world and not in idealised mathematical space. In real world, exactly once delivery is a solved problem for any practical purpose. Which is evidenced by all those systems that actually do, in fact, provide exactly once delivery.