• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

분산 락 질문드립니다.

23.05.26 23:04 작성 조회수 364

0

안녕하세요 강의 잘 들었습니다!

완강하고 나서 몇 가지 궁금증이 생겨 질문드립니다.

  1. 분산 락을 "분산" 락이라고 부르는 이유가 뭔가요?

    Redis가 인메모리 DB이다보니 서버마다 Redis를 가지고 있어 여러 서버에서 모두 가지고 있어 분산 락이라고 부르는 걸까요?

  2. Redis가 여러 서버에 분산되어 있다보니 서로 싱크를 맞추기가 쉽지 않을 것 같은데 이런 부분은 어떻게 해결할 수 있나요?

    서로 싱크가 맞지 않는다면 synchronized 키워드의 문제점처럼 여러 프로세스에서 접근할 수 있어 정합성이 보장되지 않을 것 같아서요!

  3. Redis는 인메모리 DB라 휘발성인데 서버가 다운될 경우 복구는 어떤식으로 이뤄지는지 궁금합니다!

답변 1

답변을 작성해보세요.

1

니나니노님 안녕하세요.

설명을 위해서 서버가 2대가 있다고 가정해보겠습니다.
그렇다면 서버1 과 서버2에 각각 Redis 가 있는것이 아니라 서버 1과 서버 2가 Redis 가 있는 서버 3을 바라보는 것 입니다.
그림으로 표현하면 아래와 같습니다.


image분산락이란 여러서버에서 공유된 데이터를 제어하기 위해 사용하는 기술이고 여러서버에서 레디스를 사용하여 공유된 데이터를 제어하고있기에 분산락이라고 표현하는 것입니다.

세번째 질문에 대한 답변 드리도록 하겠습니다.
첫번째로 실제 서비스에서는 Replication 을 통해 리더 Redis 가 다운되더라도 팔로워 redis 를 통해 서비스를 할 수 있도록 구성합니다.
두번째로 Redis 는 인메모리 데이터베이스긴 하지만 옵션을 통해 주기적으로 파일에 저장할 수 있습니다.

감사합니다.