| ▲ | QuantumNomad_ 2 hours ago |
| I don’t understand either. If I have three machines, all getting a slice of 300 ids each at the same time (same timestamp bits), then there is no way to tell how the total 900 ids are supposed to actually be ordered in terms of what time they happened exactly. You only know the order of each group of 300, but not how the items from the three groups interleave with each other. So then what’s the point of having the timestamp oracle in the first place? |
|
| ▲ | thruway516 2 hours ago | parent [-] |
| Yes, thats the point of a global timestamp oracle- for when you require the 900 ids to be ordered globally across machines for whatever reason. Plenty of use cases/reasons (ordering transactions, maintaining global logs etc). It's the whole point of distributed systems |
| |
| ▲ | QuantumNomad_ an hour ago | parent [-] | | But I mean, if each node is grabbing batches of ids from the oracle like the “gapless sequence” call of the OP link provides, then there is no way to know how the items in the batches should interleave. | | |
| ▲ | thruway516 an hour ago | parent [-] | | That is what the OP is saying, that their implementation guarantees strictly monotonic timestamps (ie it will tell you how they interleave in your parlance). Gapless sequences is a different (but related) problem. Its not a new problem and there are existing solutions, op is just presenting their Rust implementation with some enhancements. I suggest you read the wikipedia article on Race conditions and then read/skim the article on Lamport timestamps to understand what OP is trying to solve/claiming to do. | | |
| ▲ | mrkeen 3 minutes ago | parent [-] | | I believe Quantum is saying: Burger maker is granted seqnos 0..9
Milkshake maker is granted seqnos 10..19
They both get busy serving their items as quickly as possible
In what sense can we declare that burger eight (#7) was served before milkshake three (#12) ? |
|
|
|