Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Обозначим как векторные часы, поддерживаемые процессом i, обновление часов происходит следующим образом: [1]

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

История [ править ]

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

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

t = <t1, …, tn>

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

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

Свойство частичного упорядочивания [ править ]

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

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

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

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

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

  • Пусть будет реальное время, когда произойдет событие . Если , то
  • Позвольте быть меткой времени Lamport события . Если , то

Другие механизмы [ править ]

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

Ссылки [ править ]

  1. ^ «Распределенные системы, 3-е издание (2017)» . РАСПРОСТРАНЕННЫЕ СИСТЕМЫ.NET . Проверено 21 марта 2021 .
  2. ^ Ссылка на этот документ была обнаружена профессором Линдси Купер и описана в лекции 23 ее серии видеолекций YouTube о распределенных системах.
  3. Барбара Лисков, Ривка Ладен (1986). «Распределенные службы с высокой доступностью и отказоустойчивый распределенный сборщик мусора» . ACM. С. 29–39 . Проверено 22 сентября 2020 .
  4. ^ Colin J. Fidge (февраль 1988). «Метки времени в системах передачи сообщений, которые сохраняют частичный порядок» (PDF) . В К. Раймонде (ред.). Proc. 11-й Австралийской конференции по информатике (ACSC'88) . С. 56–66 . Проверено 13 февраля 2009 .
  5. ^ Мэттерн, F. (октябрь 1988), "Virtual Time и Глобальные состояния распределенных систем", в Cosnard, М. (ред.), Proc. Семинар по параллельным и распределенным алгоритмам , Chateau de Bonas, Франция: Elsevier, стр. 215–226.
  6. ^ Франсиско Торрес-Рохас; Mustaque Ахамад (1999), "Правдоподобные часы: постоянного размер логических часы для распределенных систем" , распределенные вычисления , 12 (4): 179-195, DOI : 10.1007 / s004460050065
  7. ^ Агарвал, Анураг; Гарг, Виджай К. (17 июля 2005 г.). «Эффективное отслеживание зависимостей для соответствующих событий в системах с общей памятью» (PDF) . Материалы двадцать четвертого ежегодного симпозиума ACM по принципам распределенных вычислений . Ассоциация вычислительной техники: 19–28. DOI : 10.1145 / 1073814.1073818 . Проверено 21 апреля 2021 года .
  8. ^ Алмейда, Пауло; Бакеро, Карлос; Фонте, Виктор (2008), «Часы с интервалом в дереве: логические часы для динамических систем», Бейкер, Теодор П .; Буй, Ален; Tixeuil, Sébastien (ред.), Принципы распределенных систем (PDF) , Lecture Notes in Computer Science, 5401 , Springer-Verlag, Lecture Notes in Computer Science, pp. 259–274, Bibcode : 2008LNCS.5401 ... B , DOI : 10.1007 / 978-3-540-92221-6 , ISBN  978-3-540-92220-9
  9. ^ Алмейда, Пауло; Бакеро, Карлос; Фонте, Виктор (2008), "Часы с интервалом в дереве: логические часы для динамических систем", Часы с деревом с интервалом: логические часы для динамических систем , Конспект лекций по информатике, 5401 , стр. 259, DOI : 10.1007 / 978-3-540-92221-6_18 , ЛВП : 1822/37748 , ISBN 978-3-540-92220-9
  10. Zhang, Yi (2014), «Предварительные сведения: результаты часов с интервальным деревом», Предварительные сведения: результаты с использованием часов с временным деревом (PDF)
  11. ^ Lum Ramabaja (2019), цветении Часы , Arxiv : 1905,13064 , Bibcode : 2019arXiv190513064R

См. Также [ править ]

  • Отметки времени Лэмпорта
  • Матричные часы
  • Вектор версии

Внешние ссылки [ править ]

  • Почему логические часы просты (сравниваются истории причин, векторные часы и векторы версий)
  • Объяснение векторных часов
  • Реализация векторных часов на основе временных меток в Erlang
  • Реализация векторных часов в Objective-C
  • Реализация векторных часов в Erlang
  • Почему векторные часы сложны
  • Почему Кассандре не нужны векторные часы