Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

Distributed System - Global Lock

Distributed System - Global Lock

분산처리 시스템에서의 동시성과 단일 노드에서 동시성을 제어하기 위한 Lock들을 소개하고 어떤 점이 다른지 소개 드리려고 합니다.

Mutex

  • 특정 쓰레드, 프로세스가 공유 Resource에 접근하는 것을 동기화 하는데 사용.
  • 하나의 쓰레드가 Mutex Lock하게 되면, 다른 쓰레드들은 Release 할 때까지 Wait해야 한다.
  • 공유데이터에 대해 동시 접근을 제어하는데 사용되며, OS 커널에서 지원


execlusive lock

  • Database, File System에서 하나의 Trnasaction은 특정 항목을 읽고 쓰기를 보장합니다.
  • 격리성 정도에 따라, 모든 읽기나 쓰기 작업은 락이 해제 될 떄까지 대기


Global lock

  • 여러 쓰레드,프로세스가 동시에 데이터에 엑세스하거나 수정하지 못하게 하는 동기화 메커니즘
  • Resource에 대해 동시 엑세스를 방지 및 데이터 일관성 보장
  • Mutex와 같은 개념이지만, Mutex는 하나의 OS내에서 동작하는 경우에 해당
  • 일반적으로 서버를 다중화하여 구성하기 때문에 부하 분산 처리 시 이를 사용
  • 분산 처리 환경과 같이 여러 노드들이 동시에 수정하는 경우를 막기 위해 Lock 정보를 어딘가 공통적으로 보관
  • 어딘가? = Mysql-Namenode, Redis, Zookeeper ..

E.g) 티켓 선착순 시스템이라고 하여 보자. Mutex 총 티켓은 30개인데, 이벤트가 발생하자마자 50명의 유저가 요청을 하였다. 이 때에 하나의 OS인 경우에서는 Thread에 Lock을 잡고 있어 다른 쓰레드들은 대기하게 되며 순차적으로 처리. Global Lock 그러나, 티켓이 몇만개에 유저가 몇십만명이 접속한다면? 하나의 OS에서 처리하기에는 너무나 많은 시간이 소요 이 때 같은 티켓에 대한 Lock을 별도의 정보에 저장한 뒤, 이를 허가한 요청만 승인해준다.