본문 바로가기
[개발] Info/용어

분산 락(Distributed Lock)

by Devsong26 2023. 12. 6.

분산 락(Distributed Lock)은 분산 시스템 환경에서 여러 노드 또는 프로세스 간에 자원에 대한 접근을 동기화하는 메커니즘입니다. 분산 시스템에서는 여러 서버나 노드가 동일한 데이터나 자원에 접근할 필요가 있을 때, 이러한 자원들이 동시에 수정되어 일관성이 깨지는 것을 방지하기 위해 분산 락을 사용합니다.

 


분산 락의 개념과 필요성

  • 분산 시스템
    • 여러 노드가 네트워크를 통해 서로 통신하면서 작업을 수행하는 시스템입니다. 이러한 시스템에서는 데이터의 일관성과 정확성을 유지하는 것이 중요합니다.
  • 자원 관리
    • 분산 시스템에서는 여러 노드가 동일한 자원(데이터베이스, 파일 시스템 등)에 동시에 접근할 수 있습니다. 이 때, 동시에 발생하는 변경사항이 자원의 일관성을 해칠 수 있습니다.
  • 동기화 필요성
    • 이러한 문제를 해결하기 위해, 분산 락은 해당 자원에 대한 접근을 하나의 노드에만 허용하고 다른 노드들은 대기하게 하는 방식으로 동기화를 제공합니다.

 

 

분산 락의 작동 방식

  • 락 획득
    • 노드가 자원에 접근하기 전에 락을 요청하고 획득합니다. 이 과정에서 락을 관리하는 중앙 서버 또는 알고리즘이 사용될 수 있습니다.
  • 자원 사용
    • 락을 성공적으로 획득한 노드는 해당 자원을 사용하거나 변경할 수 있습니다.
  • 락 해제
    • 작업이 완료되면 락을 해제하고 다른 노드가 자원에 접근할 수 있도록 합니다.

 

 

분산 락의 구현

 

분산 락의 구현은 다양한 방법으로 이루어질 수 있습니다. 몇 가지 일반적인 방법은 다음과 같습니다:

  • 중앙 집중식 락 서버
    • 예를 들어, ZooKeeper, Redlock 알고리즘을 사용하는 Redis 등이 이에 해당합니다. 이 방식에서는 중앙 서버가 락의 상태를 관리합니다.
  • 분산 데이터 저장소를 사용한 락
    • 예를 들어, Apache Cassandra, Google's Chubby 등이 있습니다. 이들은 분산 데이터 저장소의 기능을 활용하여 락을 구현합니다.

 


주의사항

  • 데드락
    • 두 노드 이상이 서로 다른 락을 획득하려고 할 때 발생할 수 있는 문제입니다. 데드락을 방지하기 위한 알고리즘과 시스템 설계가 필요합니다.
  • 확장성과 성능
    • 분산 락은 시스템의 성능과 확장성에 영향을 미칠 수 있습니다. 락을 획득하고 해제하는 과정에서 발생하는 네트워크 지연과 오버헤드가 시스템 성능에 영향을 줄 수 있습니다.
  • 락의 공정성과 락 리스
    • 락을 오래 보유하거나 특정 노드에만 락이 집중되는 것을 방지하기 위한 메커니즘이 필요합니다.



분산 락은 분산 시스템에서 중요한 동기화 도구지만, 그 구현과 사용은 시스템의 전체 아키텍처와 성능에 중대한 영향을 미칠 수 있습니다. 따라서 분산 락을 사용할 때는 이러한 요소들을 충분히 고려해야 합니다.

'[개발] Info > 용어' 카테고리의 다른 글

전통적인 MVC  (0) 2023.12.12
Nexus Repository  (0) 2023.12.08
Kafka Connector  (0) 2023.11.30
Debezium  (0) 2023.11.30
CQRS(Command Query Responsibility Segregation)  (0) 2023.11.30