The isolation property (the I of ACID) poses a special challenge for multi database transactions, since the (global) serializability property could be violated, even if each database provides it (see also global serializability).
A common algorithm for ensuring correct completion of a distributed transaction is the two-phase commit (2PC).
Since booking the flight might take up to a day to get a confirmation, two-phase commit is not applicable here, it will lock the resources for this long.
In practice, long-lived distributed transactions are implemented in systems based on web services.
In event-driven architectures, distributed transactions can be synchronized through using request–response paradigm and it can be implemented in two ways: [2]