3 ms·
Many, many distributed systems provide exactly once semantics by giving up availability. They don’t compose well with systems that don’t provide exactly once s
by hedora 3y ago
Many, many distributed systems provide exactly once semantics by giving up availability.
They don’t compose well with systems that don’t provide exactly once semantics, but that doesn’t somehow make them stop existing or stop working.
Also, you don’t need to arrange for data structures that can be modified multiple times safety.
You just need the exactly once system to support transactions, compare and swap, atomic rename, etc. Such things are usually pretty easy to retrofit.
For instance, Google and Microsoft S3 support conditional writes that check the etag for equality. That’s enough to let you layer consistency and exactly once on top. AWS S3 doesn’t support this, and people have been asking for it for a long time.
These things are extremely well understood and done at scale all the time.
Edit: I think they use etags for this. They might expose it as atomic rename or create if not exists instead. The expressive power of the two should be equivalent.
- sethammons 3y agoExactly once is a mathematical impossibility. It has been proven. See the two generals problem. You can get similar end results if you have idempotent calls and allow duplicate calls to be made. This gives the illusion or impression of exactly once.