Векторные часы - Vector clock

А вектор часы это структура данных используется для определения частичный заказ событий в распределенная система и обнаружение причинность нарушения. Как и в Отметки времени Лэмпорта, межпроцессные сообщения содержат состояние отправляющего процесса логические часы. Векторные часы системы N процессы - это множество / вектор N логические часы, по одному такту на процесс; локальная копия глобального массива часов с наименьшими возможными значениями сохраняется в каждом процессе со следующими правилами для обновления часов:

Пример системы векторных часов. События в синей области - это причины, приводящие к событию B4, тогда как события в красной области - это последствия события B5.
  • Изначально все часы равны нулю.
  • Каждый раз, когда в процессе происходит внутреннее событие, он увеличивает свое собственное. логические часы в векторе на единицу.
  • Каждый раз, когда процесс отправляет сообщение, он увеличивает свои собственные логические часы в векторе на единицу (как в пункте выше, но не дважды для одного и того же события), а затем отправляет копию своего собственного вектора.
  • Каждый раз, когда процесс получает сообщение, он увеличивает свои собственные логические часы в векторе на единицу и обновляет каждый элемент в своем векторе, беря максимальное значение из собственных векторных часов и значение в векторе в полученном сообщении (для каждый элемент).

История

Без использования специального названия "векторные часы" впервые была упомянута концепция векторных часов.[1] в статье 1986 г. Ривка Ладина и Барбара Лисков где используется термин "составная временная метка".[2] Цитата из страницы 31 статьи Лискова / Ладина:

Мы решаем эту проблему, используя составные метки времени, где на каждую реплику приходится по одной детали. Таким образом, если имеется n реплик, метка времени t равна

t =

где каждая часть - положительное целое число. Поскольку обычно будет небольшое количество реплик (например, от 3 до 7), использование такой метки времени является практичным.

Термин «векторные часы» был впервые использован независимо Колином Фиджем и Friedemann Mattern в 1988 г.[3][4]

Свойство частичного заказа

Векторные часы допускают частичную причинную последовательность событий. Определение следующего:

  • обозначает векторные часы события , и обозначает компонент этих часов для процесса .
    • По-английски: меньше чем , если и только если меньше или равно для всех показателей процесса , и по крайней мере одно из этих отношений строго меньше (т. е. ).
  • обозначает это событие произошло до события . Это определяется как: если , тогда

Характеристики:

  • Антисимметрия: если , то ¬
  • Транзитивность: если и , тогда или если и , тогда

Связь с другими заказами:

  • Позволять быть в реальном времени, когда событие происходит. Если , тогда
  • Позволять быть Отметка времени Лэмпорта события . Если , тогда

Прочие механизмы

  • В 1999 году Торрес-Рохас и Ахамад разработали Правдоподобные часы,[5] механизм, который занимает меньше места, чем векторные часы, но который в некоторых случаях полностью упорядочивает события, которые причинно совпадают.
  • В 2008 году Алмейда и другие. представил Часы с интервалом в дереве.[6][7][8] Этот механизм обобщает векторные часы и позволяет работать в динамических средах, когда идентичность и количество процессов в вычислениях заранее неизвестны.
  • В 2019 году Lum Ramabaja разработал Часы Цветения, [9] вероятностная структура данных, пространственная сложность которой не зависит от количества узлов в системе. Если два часа не сопоставимы, часы цветения всегда могут вывести их, т.е. ложноотрицательные результаты невозможны. Если два часа сопоставимы, часы Блума могут вычислить достоверность этого утверждения, то есть могут вычислить частоту ложных срабатываний между сопоставимыми парами часов.

Рекомендации

  1. ^ Ссылка на эту статью была обнаружена Профессор Линдси Купер и описано в лекция 23 из серии видеолекций на YouTube о распределенных системах
  2. ^ Барбара Лискова, Ривка Ладен (1986). «Распределенные службы с высокой доступностью и отказоустойчивый распределенный сборщик мусора». ACM. стр. 29–39. Получено 2020-09-22.
  3. ^ Колин Дж. Фидж (февраль 1988 г.). «Метки времени в системах передачи сообщений, которые сохраняют частичный порядок» (PDF). В К. Раймонде (ред.). Proc. 11-й Австралийской конференции по информатике (ACSC'88). стр. 56–66. Получено 2009-02-13.
  4. ^ Маттерн, Ф. (октябрь 1988 г.), «Виртуальное время и глобальные состояния распределенных систем», в Cosnard, M. (ed.), Proc. Практикум по параллельным и распределенным алгоритмам, Chateau de Bonas, France: Elsevier, стр. 215–226.
  5. ^ Франсиско Торрес-Рохас; Мустак Ахамад (1999), «Правдоподобные часы: логические часы постоянного размера для распределенных систем», Распределенных вычислений, 12 (4): 179–195, Дои:10.1007 / s004460050065
  6. ^ Алмейда, Пауло; Бакеро, Карлос; Фонте, Виктор (2008), «Часы с интервалом в дереве: логические часы для динамических систем», в Baker, Theodore P .; Буй, Ален; Тиксей, Себастьян (ред.), Принципы распределенных систем (PDF), Конспект лекций по информатике, 5401, Springer-Verlag, Lecture Notes in Computer Science, pp. 259–274, Bibcode:2008LNCS.5401 ..... B, Дои:10.1007/978-3-540-92221-6, ISBN  978-3-540-92220-9
  7. ^ Алмейда, Пауло; Бакеро, Карлос; Фонте, Виктор (2008), "Часы с интервалом в дереве: логические часы для динамических систем", Часы с деревом интервалов: логические часы для динамических систем, Конспект лекций по информатике, 5401, п. 259, г. Дои:10.1007/978-3-540-92221-6_18, HDL:1822/37748, ISBN  978-3-540-92220-9
  8. ^ Чжан, И (2014), "Предварительные сведения: результаты интервальных часов", Предварительные предварительные сведения: результаты интервального дерева часов (PDF)
  9. ^ Лум Рамабаджа (2019), Часы Цветения, arXiv:1905.13064, Bibcode:2019arXiv190513064R

Смотрите также

внешняя ссылка