Алгоритм Чанди–Лэмпорта — это алгоритм моментального снимка , который используется в распределенных системах для записи согласованного глобального состояния асинхронной системы. Он был разработан и назван в честь Лесли Лэмпорта и К. Мани Чанди . [1]
Согласно веб-сайту Лесли Лэмпорта, алгоритм моментального снимка был описан, когда они посетили Чанди, который был в Техасском университете (Остин) . Он поставил задачу за ужином, но они выпили слишком много вина, чтобы думать об этом. На следующее утро, пока Лэмпорт был в душе, он придумал решение. Когда он прибыл в офис Чанди, тот ждал его с тем же решением. Они считали алгоритм простым применением основных идей статьи 27 под названием « Время, часы и упорядочение событий в распределенной системе». [2]
Предположения алгоритма следующие:
Алгоритм работает с использованием сообщений маркера. Каждый процесс, который хочет инициировать снимок, записывает свое локальное состояние и отправляет маркер на каждый из своих исходящих каналов. Все остальные процессы, получив маркер, записывают свое локальное состояние, состояние канала, с которого только что пришел маркер, как пустое, и отправляют сообщения маркера на все свои исходящие каналы. Если процесс получает маркер после записи своего локального состояния, он записывает состояние входящего канала, с которого пришел маркер, как несущего все полученные сообщения с момента первой записи своего локального состояния.
Некоторые из предположений алгоритма могут быть облегчены с использованием более надежного протокола связи, такого как TCP/IP . Алгоритм может быть адаптирован таким образом, чтобы одновременно могло происходить несколько снимков.
Алгоритм Чанди–Лэмпорта работает следующим образом:
На основе этого наблюдатель создает полный снимок: сохраняется состояние каждого процесса и все сообщения «в эфире».