my question is about situation when there is action between players at game (like items exchange, players money/tokens billing change). I know this depends on many factors, but please look at one of solutions below.
Game state is persisted at sharded database cluster (so no one server transactions possible). When user interact with other (like buy something from second one) there is created transaction at transaction manager (disturbed transactions - when money comes to gaming then some ACID is "must have").
This is heavy solution but ensure synchronization of resources, also serialize operations. Scalablity depends on transaction manager, but each transacion is very expensive (also in request latency). If transaction manager will be another component (not integrated in engine) then on each request (even non transactional) comes another request to ensure resource synchronization (latency penalty again).
How does game engines resolve this kind of problems?