[분산 컴퓨팅] 1,2장 : 분산 컴퓨팅 & 2 Phase Commit

드림보이즈·2024년 10월 14일




분산 컴퓨팅이란

'네트워크' 상에서 분산된 컴퓨터 장치들이 메시지를 주고 받으며
'특정 목적'의 일을 수행하는 것

비동기적 통신

네트워크를 통해 보낸 메시지가 종착지에 '정해진 시간'에 도달할 수 없는 통신

분산 컴퓨팅의 2가지 요구 조건

1. 안전성 (Safety)

잘못된 결과가 발생해선 안됨

2. 라이브니스 (Liveness)

원하는 결과가 '어느 시점'에는 반드시 실행되어야 함.

그런데 안정성과 라이브니스를 동시에 충족하기란 쉽지 않다.

트랜잭션

분산 컴퓨팅 참여 프로세스 간 거래 행위

원자성

둘다 하거나, 둘다 안하는

2 Phase Commit

위 요구 조건 2가지인 안전성과 라이브니스를 충족할 수 있는 프로토콜

예외 상황을 통한 추가 필요 요소들

  1. TC가 Commit을 보내고 다운될 경우 => 보내기 전 스토리지에 log를 저장해두고,
    다시 켜졌을 때 무슨 짓을 했는지 알 수 있다.

TC 추가 요소 : Write-Ahead Log

2. Shard A가 Prepare OK를 보내고 다운 => 나도 보내기 전 log를 저장해두고, 재전송해서 TC의 메시지를 받는다.

Shard 추가 요소 : Write-Ahead Log, Retransmission

  1. TC가 메시지를 보내지 않는다 => 옆 Shard에게 물어본다.
    Shard 추가 요소 : 샤드 간 통신

정리하자면, 2PC란

  • 원자적 커밋 프로토콜
  • 선제적 메시지 기록
  • 메시지 재전송
  • 프로토콜 종료, 재시작
  • 노드 간 통신

을 구현한 것이다.

profile
시리즈 클릭하셔서 카테고리 별로 편하게 보세용

0개의 댓글