Алгоритм Беркли — это метод синхронизации часов в распределенных вычислениях , который предполагает, что ни одна машина не имеет точного источника времени. Он был разработан Гузеллой и Дзатти в Калифорнийском университете в Беркли в 1989 году. [1] Как и алгоритм Кристиана , он предназначен для использования в интрасетях .
В отличие от алгоритма Кристиана , серверный процесс в алгоритме Беркли, называемый лидером , периодически опрашивает другие процессы- последователи . В общем, алгоритм таков:
При использовании этого метода среднее значение отменяет тенденции индивидуальных часов к дрейфу. Гузелла и Дзатти опубликовали результаты, полученные на 15 компьютерах, часы которых были синхронизированы с точностью до 20-25 миллисекунд с использованием их протокола.
Компьютерные системы обычно избегают перемотки своих часов, когда они получают отрицательное изменение часов от лидера. Это нарушит свойство монотонного времени, которое является фундаментальным предположением в некоторых алгоритмах в самой системе или в программах, таких как make . Простым решением этой проблемы является остановка часов на время, указанное лидером, но это упрощенное решение также может вызвать проблемы, хотя они и менее серьезны. Для незначительных исправлений большинство систем замедляют часы, применяя исправление в течение более длительного периода времени.
Часто любой клиент, чьи часы отличаются на значение, выходящее за пределы заданного допуска, игнорируется при усреднении результатов. Это предотвращает резкое искажение общего системного времени из-за одного ошибочного часа.