벡터 클럭 및 분산 스냅샷

벡터 시계

벡터 클럭은 모든 노드의 논리적 클럭으로 구성된 벡터입니다. 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 ]

임의의 두 이벤트에 대해 aaabbba → 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_jj처음으로 받은 marker marker마커 메시지 후에 자체 상태를 기록하고 다른 수신 에지 메시지 기록을 시작합니다 . 프로세스P j P_jj파이프 C ij C_{ij}이자노드의 상태는 비어 있는 것으로 기록되고 스냅샷은 다른 프로세스로 브로드캐스트됩니다.

3. 스냅샷 종료: 들어오는 모든 에지가 마커 마커를 수신한 경우마커 메시지 전송 되면 스냅샷이 기록됩니다.

(프로세스가 마커 마커를 수신하면marker 받은 다음marker marker를 수신 합니다.마커 의 채널은 비어 있음으로 설정되며 프로세스는 더 이상 이 채널의 메시지를 기록하지 않습니다. )

추천

출처blog.csdn.net/weixin_46878177/article/details/127648169