Since there are a limited number of players, competition problems within a few seconds are unlikely to be supported for a very long time, so you have two options:
- Just ignore the problem. Exclusion clusters will occur, but as long as this is not a stable situation, the replay mechanics for transactions ensures that all of them are executed.
- When someone leaves, record it yourself and update the status of the tournament by assigning ranks asynchronously. This means that you cannot immediately tell them about your ranking, but rather you should make an asynchronous response or poll it.
I would suggest that the first one, to be honest: even if half of your 1000 tournament people left in the first 5 minutes - an incredibly unlikely event - you still watched less than 2 beats per second. In fact, any spikes will be smaller and shorter than that.
It should be borne in mind that due to the fact that transactions are performed, transactions of the same group of entities that meet together will be resolved in a semi-random order, that is, this is not a strict FIFO queue. If you require this, you will have to force it yourself, although this is far from a trivial matter in a distributed system of any kind.
source share