인프런 커뮤니티 질문&답변

gelab님의 프로필 이미지

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

Named Lock 활용해보기

네임드락과 분산락

24.08.24 20:43 작성

·

40

·

수정됨

0

네임드락에 대해 더 공부해보려고 구글링하는데

네임드락이 MySQL에서 제공하는 분산락이라고 하더라구요

 

그럼 네임드락이 여러 개로 스케일 아웃된 DB 환경 혹은 스케일 아웃된 서버에서도 잘 동작한다는건데

  1. 전자의 경우 (DB 분산) 네임드락도 결국 쿼리로 하나의 데이터베이스(MySQL)의 메타데이터에 락을 거는 것이기 때문에 다른 데이터베이스에서는 그게 안걸려 정합성 문제 해결이 안되지 않나요? 이렇게 되면 분산락이 아닌 것 같은데 왜 분산락일까요?ㅜㅜ


  2. 후자의 경우라면 비관적락, 낙관적락, 네임드락 모두 잘 동작할 것 같은데(데이터베이스는 하나인 경우) 왜 분산락이라는게 따로 있는 걸까요..?

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

2024. 08. 29. 23:06

gelab 님 안녕하세요.
1. named lock 같은경우는 redis 와 비슷한 방법으로 사용을 하신다고 생각하시면 편할것 같습니다.
named lock 을 획득하는것만으로 정합성이 보장되는것이 아닌, named lock 획득이 1개의 스레드밖에 안되는특성을 활용하여 1개의 요청만 정합성이 요구되는 로직을 실행하도록 만든다 라고 이해해주시면 될것 같습니다.

  1. 1번의 답변으로 어느정도 말씀을 드린것 같습니다. 혹시 다른게 궁금하시다면 말씀 부탁드리겠습니다!

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 26. 20:46

안녕하세요, 인프런 AI 인턴입니다.

네임드락에 대한 질문이시군요. 네임드락은 분산 시스템에서 자원에 대한 동시 접근을 제어하기 위해 사용되는 기술 중 하나입니다. 여러분이 언급하신 MySQL의 네임드락은 특정 데이터베이스 인스턴스에 대한 락을 의미하며, 이는 데이터베이스 수준에서 동시성을 관리하는 데 사용됩니다.

  1. 첫 번째 질문에 대한 답변입니다: 분산 데이터베이스 환경에서 단일 MySQL 인스턴스의 네임드락은 다른 데이터베이스 인스턴스에는 직접적인 영향을 미치지 않습니다. 네임드락이 분산락으로 불리는 이유는 애플리케이션 레벨에서 동일한 네임드락을 사용하여 여러 인스턴스나 서버 간의 동기화를 달성할 수 있기 때문입니다. 하지만, 주요 포인트는 네임드락을 활용하는 애플리케이션의 구현 방식과 분산 시스템의 아키텍처에 달려 있습니다.

  2. 두 번째 질문에 대한 답변입니다: 분산 시스템에서는 여러 컴퓨팅 인스턴스가 동일한 자원(데이터베이스 포함)에 접근해야 하는 상황이 자주 발생합니다. 이런 경우, 단일 데이터베이스 인스턴스에만 적용되는 비관적락이나 낙관적락만으로는 모든 동시성 문제를 해결하기 어렵습니다. 분산락이 필요한 이유는 시스템 전체에서 데이터의 일관성과 동시성을 관리하기 위해서입니다. 분산락은 여러 서버나 애플리케이션 인스턴스가 공유 자원에 대해 안전하게 동작하도록 보장하는 메커니즘을 제공합니다.

네임드락이 분산 데이터베이스 환경 및 분산 애플리케이션 환경에서 어떻게 활용될 수 있는지는 구현되는 아키텍처와 애플리케이션의 로직에 따라 다릅니다. 따라서, 네임드락을 포함한 다양한 락 메커니즘이 각기 다른 시나리오와 요구 사항에 맞추어 적합하게 사용됩니다.

gelab님의 프로필 이미지

작성한 질문수

질문하기