2014-01-26 2 views
4

Я понимаю необходимость векторных часов в терминах скалярных логических часов, не обеспечивающих достаточную информацию, чтобы определить, есть ли конфликт обновления в обновлении хранилища значений ключей, например.Что решают матричные часы, но векторные часы не могут?

Но я не уверен, какая проблема до сих пор не решена векторными часами, а затем решена более громоздкими матричными часами?

ответ

4

В случае постоянной консистенции все сообщения, когда-либо созданные системой, должны храниться до тех пор, пока каждый получатель не получит сообщение (== возможная согласованность). Но вы не хотите сохранять сообщения навсегда, поэтому вам нужно иметь возможность определить, какие сообщения были получены всеми узлами, и их можно удалить, поэтому вы используете матричные часы.

Матричные часы - это список векторных часов, поэтому вы знаете текущее состояние каждого узла в системе. Исходя из этого, вы можете знать, какой из равноправных сообщений уже получил сообщения. Когда вы обмениваетесь сообщениями с другим узлом в системе, вы сравниваете матричные часы и всегда помните самые высокие значения для каждого узла. Впоследствии вы можете удалить сообщения, которые были отправлены раньше, потому что узел уже должен их получить.

Это очень краткое описание протокола TSAE (timestamped anti-entropy). Вы можете больше узнать об этом в проекте диссертации. Сообщество и членство в группе слабой последовательности Ричардом Эндрю Голдингом с 1992 года (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.7385&rep=rep1&type=pdf), начиная с главы 5.

+0

не могли бы вы узнать, что другие узлы знают, в конечном счете, за счет использования векторных часов? (или это займет намного больше времени, и количество сообщений будет намного дольше?) –

+1

да, вам нужно поговорить с каждым узлом p2p, чтобы получить там векторные часы и узнать, что они знают. матрица синхронизирует информацию с каждого узла, с которым вы общаетесь – peter

1

Различия между часами Lamport (скалярные логические часы в вашем термине), векторные часы и матричные часы лежат в том, что они представляют разные уровни знание.

Для векторных часов $ vt_i [1 \ ldots n] $ в сайте $ i $, запись $ vt_i [k] $ представляет собой знание сайта $ S_i $ о сайте $ S_k $. Знание имеет вид «$ i $ знает $ k $, что $ \ ldots $".

Для матричных часов $ mt_i [1 \ ldots n, 1 \ ldots n] $ в сайте $ S_i $ запись $ mt_i [k, l] $ представляет собой знание, которое сайт $ S_i $ имеет о знании по $ S_k $ о сайте $ S_l $. Знание здесь формы «$ i $ знает, что $ k $ знает $ l $, что $ \ ldots $".

Интуитивно мы можем делать больше вещей с большим количеством знаний.

Следующее описание в основном цитаты из [1]:

Векторные часы и матричные часы широко используются в асинхронных распределенных передачи сообщений системы.

Некоторые примеры областей, использующих векторные часы, представляют собой контрольную точку, причинную память, поддерживая согласованность реплицированных файлов, глобальный моментальный снимок, глобальное приближение времени, обнаружение прекращения, ограниченное многопользовательское построение общих переменных, взаимное исключение и отладку (обнаружение предикатов).

Некоторые примеры областей, использующих матричные часы, разрабатывают отказоустойчивые протоколы и распределенные протоколы базы данных, включая протоколы для отбрасывания устаревшей информации в распределенных базах данных и протоколы для решения реплицированных журналов и проблем с реплицированными словарями.

Для матрицы часов, мы замечаем, что $ min_k (mt_i [к, г]) \ аличные $ означает, что сайт $ S_i $ знает, что любой другой сайт $ к $ знает свой прогресс до своего местного времени $ т $.

Это свойство позволяет сайту больше не отправлять информацию с местным временем $ \ le t $ или отбрасывать устаревшую информацию.

[1] Concurrent Knowledge and Logical Clock Abstractions Ajay D. Kshemkalyani 2000

 Смежные вопросы

  • Нет связанных вопросов^_^