기타/출퇴근 공부 간단 정리

[Shorts] 분산 컴퓨팅에서의 안정성과 라이브니스를 충족하는 방법

31514 2025. 2. 10. 15:55

A 노드 B 노드가 있다고 가정해보자.

어떤 사용자는 TC(Transaction Coordinator)에게 자신이 하고자하는 메시지를 보낼 수 있다.

메시지를 받은 TC는 A 노드와 B 노드에게 사용자가 하고자 하는 일을 전달하고 확인 메시지를 받을 수 있다.

 

이런 상황에서 TC 또는 노드들에 장애가 발생하면 어떻게 될까?

예를 들면, TC가 A와 B에게 메시지를 보냈지만 A에게 메시지를 전송하자마자 알 수 없는 이유로 TC에 장애가 발생했다면?

그럼 B는 A와 달리 어떤 메시지도 받지 못하게 된다.

이런 상황을 안정성에 위반한다고 할 수 있다.

 

다른 예로, 사용자가 TC에게 하고자 하는 일을 전달했지만 TC에 장애가 발생하여 A 노드, B 노드 모두 무한정 기다리는 상황이라면?

이런 상황은 라이브니스에 위반한다고 볼 수 있다.

 

어떻게 하면 이런 상황을 해결할 수 있을까?

정답은 WAL과 노드들과의 통신이다.

 

WAL은 Write - Ahead Log의 약자인데, 특정 행위를 하기 전에 각 디스크에 Log를 기록해두는 것을 말한다.

이를 통해 시스템에 장애가 발생하도 재부팅 후 로그를 참조하면 무엇을 하고자 했는지 알 수 있다.

 

노드들과의 통신은 라이브니스를 해결해준다.

 

이러한 방법을 2단계 커밋 프로토콜이라고 한다.