벡터 시계
벡터 클럭은 모든 노드의 논리적 클럭으로 구성된 벡터입니다. NN 의 경우N개의 노드 로 구성된 분산 시스템NNN 차원 벡터,[ C 0 , C 1 , . . , C n − 1 ] [C_0,C_1,...,C_{n-1}][ 씨0,씨1,... ,씨n - 1]。
아이디어: 프로세스의 우선 순위를 추가로 지정하지 않고도 전체 순서 관계를 달성할 수 있도록 각 프로세스가 시스템의 다른 모든 프로세스의 논리적 시계를 알게 합니다.
계산 방법: 프로세스 ii
용i 방문,T i [ i ] T_i[i]티나[ i ] 프로세스ii를i 로컬 논리적 시간.
1. 공정iii 새로운 이벤트 발생 시T i [ i ] = T i [ i ] + 1 T_i[i] = T_i[i] +1티나[ 나는 ]=티나[ 나는 ]+1 .
2. 공정iii가 메시지를 보낼 때 그것의 벡터 클럭T i T_i티나메시지에 첨부되었습니다.
3. 공정 jj 일 때메시지를 수신한 후 j는 로컬 벡터 시간을 업데이트합니다.T j [ k ] = max ( T j [ k ] , T [ k ] ) T_j[k] = max(T_j[k], T[k])티j[ k ]=최대 × ( 티j[ k ] ,T [ k ]),其中k ∈ [ 1 , N ] k \in [1,N ]케이∈[ 1 ,N ] (T는 메시지에 첨부된 벡터 시간입니다).
T i < T j ⇔ ∀ x : T i [ x ] ⩽ T j [ x ] 및 ∃ y : T i [ y ] < T j [ y ] T_i < T_j ~~~\Leftrightarrow~~~ \forall x: T_i[x] \leqslant T_j[x] ~~and~~\exists y:T_i[y] < T_j[y]티나<티j ⇔ ∀ 엑스:티나[ 엑스 ]⩽티j[ x ] 및 d ∃ y :T 나[ y ]<티j[ y ]
임의의 두 이벤트에 대해 aaa 와bbb,a → b ⇔ T i < T ja\rightarrow b ~~\Leftrightarrow~~ T_i<T_jㅏ→비 ⇔ 티나<티j
분산 스냅샷
장애가 발생했을 때 과거의 정상 상태로 시스템을 복원하는 데 사용되는 시스템의 전역 상태를 얻기 위해 시스템의 "스냅샷을 찍는" 방법.
Master Lamport는 예를 들었습니다. 철새가 가득한 하늘, 장면이 너무 커서 한 장의 사진에 담을 수 없습니다.
Chandy-Lamport 알고리즘
1. 초기화: 프로세스 P i P_i피나자신의 상태 및 방송 마커 마커 기록다른 프로세스 에 표시 하고 들어오는 에지 메시지 기록을 시작합니다 .
2. 스냅샷 확산: 프로세스 P j P_j피j처음으로 받은 marker marker마커 메시지 후에 자체 상태를 기록하고 다른 수신 에지 메시지 기록을 시작합니다 . 프로세스P j P_j피j파이프 C ij C_{ij}씨이자노드의 상태는 비어 있는 것으로 기록되고 스냅샷은 다른 프로세스로 브로드캐스트됩니다.
3. 스냅샷 종료: 들어오는 모든 에지가 마커 마커를 수신한 경우마커 메시지 가 전송 되면 스냅샷이 기록됩니다.
(프로세스가 마커 마커를 수신하면marker 를 받은 다음marker marker를 수신 합니다.마커 의 채널은 비어 있음으로 설정되며 프로세스는 더 이상 이 채널의 메시지를 기록하지 않습니다. )