The snapshot algorithm is an algorithm used in distributed systems for recording a consistent global state of an asynchronous system.
The assumptions of the algorithm are as follows:
- There are no failures and all messages arrive intact and only once
- The communication channels are unidirectional and FIFO ordered
- There is a communication path between any two processes in the system
- Any process may initiate the snapshot algorithm
- The snapshot algorithm does not interfere with the normal execution of the processes
- Each process in the system records its local state and the state of its incoming channels
Some of the assumptions of the algorithm can be overcome using a more reliable communication protocol such as TCP/IP. The algorithm can be adapted so that there could be multiple snapshots occurring simultaneously.