나는 Lamport timestamps으로 뭔가를 오해하고 있다고 생각합니다. 메시지는 분산 된 엔드 포인트간에 이동하는 데 동일한 시간이 걸릴 것으로 예상됩니다.가변 메시지 여행 시간이 포함 된 Lamport 타임 스탬프
p1
프로세스는 메시지 m1
과 m2
을 순차적으로 처리하여 p2
으로 보냅니다. 기사의 알고리즘 섹션의 의사에 따라, 우리는이 : m1
모든 것이 괜찮 p2
m2
전에 도달
# we start at 0
time(p1) = 0
# we send m1
time(p1) = time(p1) + 1 = 1
send(m1, 1)
# we send m2
time(p1) = time(p1) + 1 = 2
send(m2, 2)
합니다. m2
가 먼저한다면, 우리가 얻을 : p2
의 현지 시간에 따라서
# we start at 0
time(p2) = 0
# we receive m2 first
time(p2) = max(2, time(p2)) + 1 = max(2, 0) + 1 = 3
# we receive m1 second
time(p2) = max(1, time(p2)) + 1 = max(1, 3) + 1 = 4
(time(p2)
) m2
3의 시간을 가지고 있으며, m1
는 순서의 반대 4의 시간이있는 메시지 원래 보냈습니다.
Lamport 타임 스탬프에는 일관된 여행 시간이 필요합니까?
나는 내가 이해하는지 확신하지 못한다. p2에서 메시지를 수신하는 타임 스탬프가 p1에서 메시지를 보내는 타임 스탬프와 동일한 방식 (< or >)으로 정렬되어야한다는 요지가 아니라고 말하고 있습니까? 그렇다면 논리적 클록의 포인트/용도는 어쨌든 무엇입니까? – hmm
@hmm 메시지의 타임 스탬프는 다시 쓰여지지 않습니다. 그들은 메시지가 보내 졌을 때와 마찬가지입니다. 그래서, 아니요, "타임 스탬프를받습니다"라는 의도는 아닙니다. 그러나 메시지에 대한 회신 또는 링크 된 아티클의 첫 번째 단락에있는 동기 부여 예제에서와 같이 메시지에 의해 트리거 된 다른 작업은 응답하는 메시지보다 더 큰 타임 스탬프를 가져야합니다. 네트워크 이벤트 주문의 정도. – rici
WP 기사에서 지적했듯이, 이것은 벡터 시계에 대한 발판이됩니다. 네트워크 시계의 가치를 이해하기 위해이 알고리즘의 응용 및 단점을 이해하는 것이 유용합니다. 나는 Lamport의 논문을 읽는 것이 좋습니다. 학문적이지만, 그들은 일반적으로 꽤 읽기 쉽습니다. – rici