Алгоритм Беркли
Алгоритм Беркли — это метод синхронизации часов в распределенных вычислениях , который предполагает, что ни одна машина не имеет точного источника времени. Он был разработан Гуселлой и Затти в Калифорнийском университете в Беркли в 1989 году. [1] Как и алгоритм Кристиана , он предназначен для использования внутри интрасетей .
Алгоритм
[ редактировать ]В отличие от алгоритма Кристиана , серверный процесс в алгоритме Беркли, называемый лидером , периодически опрашивает другие последующие процессы. В общих чертах алгоритм такой:
- Лидер , выбирается посредством избирательного процесса такого как алгоритм Чанга и Робертса .
- Лидер , которые отвечают о своем времени , опрашивает подписчиков аналогично алгоритму Кристиана .
- Лидер за наблюдает временем прохождения туда и обратно (RTT) сообщений и оценивает время каждого ведомого и свое собственное.
- Затем лидер усредняет время часов, игнорируя любые значения, которые он получает , значительно выходящие за рамки значений остальных.
- Вместо отправки обновленного текущего времени обратно другому процессу лидер затем отправляет сумму (положительную или отрицательную), на которую каждый ведомый должен скорректировать свои часы. Это позволяет избежать дальнейшей неопределенности из-за RTT в ведомых процессах.
С помощью этого метода среднее значение нивелирует склонность отдельных часов к дрейфу. Гуселла и Затти опубликовали результаты с участием 15 компьютеров, часы которых были синхронизированы с точностью до 20-25 миллисекунд с использованием их протокола.
Компьютерные системы обычно избегают перематывать часы, когда получают от лидера отрицательное изменение часов. Это нарушит свойство монотонности времени, которое является фундаментальным предположением в некоторых алгоритмах самой системы или в таких программах, как make . Простое решение этой проблемы — остановить часы на время, указанное лидером, но это упрощенное решение также может вызвать проблемы, хотя они и менее серьезные. При незначительных исправлениях большинство систем замедляют ход часов, применяя поправки в течение более длительного периода времени.
Часто любой клиент, часы которого отличаются на значение, выходящее за пределы заданного допуска, не учитывается при усреднении результатов. Это предотвращает резкое искажение общего системного времени из-за одного ошибочного тактового сигнала.
Ссылки
[ редактировать ]- ^ Гуселла, Р.; Затти, С. (1989), «Точность синхронизации часов, достигаемая с помощью TEMPO в Berkeley UNIX 4.3BSD», IEEE Transactions on Software Engineering , 15 (7), IEEE: 847–853, doi : 10.1109/32.29484