Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C/C++의 버클리 알고리즘

<시간/>

버클리 알고리즘은 분산 시스템에서 클럭 동기화에 사용되는 알고리즘입니다. 이 알고리즘은 분산 네트워크의 일부 또는 전체 시스템에 다음 문제 중 하나가 있는 경우에 사용됩니다. -

  • A. 기계에 정확한 시간 소스가 없습니다.

  • B. 네트워크 또는 컴퓨터에 UTC 서버가 없습니다.

분산 시스템 물리적으로 분리되어 있지만 네트워크를 사용하여 함께 연결된 여러 노드를 포함합니다.

C/C++의 버클리 알고리즘

버클리의 알고리즘

이 알고리즘에서 시스템은 노드를 마스터/리더 노드로 선택합니다. 이것은 서버의 풀 노드에서 수행됩니다.

알고리즘은 -

  • 선출 과정은 서버의 마스터 노드를 선택합니다.

  • 그런 다음 리더는 Cristian's Algorithm과 유사한 방식으로 시간을 제공하는 팔로워를 조사합니다. , 이것은 주기적으로 수행됩니다.

  • 그런 다음 리더는 리더 노드에 제공되는 평균 시간인 글로벌 클록 시간에 동기화하기 위해 다른 노드가 변경하거나 조정해야 하는 상대 시간을 계산합니다.

버클리 알고리즘을 사용하여 시계를 동기화하기 위해 따라야 하는 단계를 요약해 보겠습니다.

클록 타이밍이 있는 분산 시스템의 노드 -

N1 -> 14:00 (master node)
N2 -> 13: 46
N3 -> 14: 15

1단계 − 리더가 선출되고 노드 N1이 시스템의 마스터입니다.

2단계 - 모든 노드에서 리더가 시간을 요청합니다.

N1 -> time : 14:00
N2 -> time : 13:46
N3 -> time : 14:20

3단계 − 리더는 시간의 평균을 계산하고 수정 시간을 노드로 다시 보냅니다.

N1 -> Corrected Time 14:02 (+2)
N2 -> Corrected Time 14:02 (+16)
N3 -> Corrected Time 14:02 (-18)

이것은 Berkeley 알고리즘을 사용하여 분산 시스템의 노드 동기화를 수행하는 방법을 보여줍니다.