stringtranslate.com

алгоритм Беркли

Алгоритм Беркли — это метод синхронизации часов в распределенных вычислениях , который предполагает, что ни одна машина не имеет точного источника времени. Он был разработан Гузеллой и Дзатти в Калифорнийском университете в Беркли в 1989 году. [1] Как и алгоритм Кристиана , он предназначен для использования в интрасетях .

Алгоритм

В отличие от алгоритма Кристиана , серверный процесс в алгоритме Беркли, называемый лидером , периодически опрашивает другие процессы- последователи . В общем, алгоритм таков:

  1. Лидер выбирается посредством избирательного процесса , например, алгоритма Чанга и Робертса .
  2. Лидер опрашивает подписчиков , которые отвечают, указывая свое время , аналогично алгоритму Кристиана .
  3. Лидер следит за временем передачи сообщений туда и обратно (RTT) и оценивает время каждого последователя и свое собственное.
  4. Затем лидер усредняет показания часов, игнорируя любые полученные им значения , сильно отличающиеся от значений других.
  5. Вместо того, чтобы отправлять обновленное текущее время обратно другому процессу, лидер затем отправляет сумму (положительную или отрицательную), на которую каждый последовательный процесс должен скорректировать свои часы. Это позволяет избежать дальнейшей неопределенности из-за RTT в процессах последователей .

При использовании этого метода среднее значение отменяет тенденции индивидуальных часов к дрейфу. Гузелла и Дзатти опубликовали результаты, полученные на 15 компьютерах, часы которых были синхронизированы с точностью до 20-25 миллисекунд с использованием их протокола.

Компьютерные системы обычно избегают перемотки своих часов, когда они получают отрицательное изменение часов от лидера. Это нарушит свойство монотонного времени, которое является фундаментальным предположением в некоторых алгоритмах в самой системе или в программах, таких как make . Простым решением этой проблемы является остановка часов на время, указанное лидером, но это упрощенное решение также может вызвать проблемы, хотя они и менее серьезны. Для незначительных исправлений большинство систем замедляют часы, применяя исправление в течение более длительного периода времени.

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

Ссылки

  1. ^ Гузелла, Р.; Затти, С. (1989), «Точность синхронизации часов, достигнутая TEMPO в Berkeley UNIX 4.3BSD», IEEE Transactions on Software Engineering , 15 (7), IEEE: 847–853, doi :10.1109/32.29484