본문 바로가기

Data Base/Redis

Redis - Master / Replica 통신 과정

저번 글에서는 Master와 Replica에 대해서 어떻게 fsync와 psync가 일어나는 지 알아보았으니

이번에는 Master과 Replica가 서로 어떻게 통신하는 과정을 그림으로 설명하려고 한다. 

 

redis의 노드 구성도

일단 Redis의 기본 배경부터 설명하고 가면 기본적으로 redis는 총 4개의 노드로 구성된다 . 

1개의 Master, 2개의 Replica를 가지고 1개의 Sentinel으로 구성되는 데 아래 그림에서는 Master와 Replica의 통신과정을 설명하기위해서 Sentienl은 생략했다. 

Server - Client 구분표

Master를 기준으로 봤을 때 Server와 client를 구분해야한다. 

기본적으로 server에게 명령어를 던져주는 존재를 Redis에서는 Client라고 보고 있어서 만약 Server-Replica가 기준이 된다면 Master가 client입장이 된다.

User-client, Master, Client와의 통신과정

Master는 명령어를 던져주는 역할을 하지만 계속해서 Replica에게 그 던져준 명령어에 대한 ack을 받기를 기다리고 있다 

만약 네트워크 통신이 잠깐 끊기게되면 psync나 fsync가 실행되기 위해 아래와 같은 그림이 실행된다.

네트워크의 문제 발생했을 경우
psync가 일어나기 위한 조건들

이렇게 오늘은 Master - Replica에 통신과정에 대해서 알아보았다.

 

Master는 backlog_buffer에 먼저 적고 Replica에게 요청을 보내며 그렇게 Asynchronize 하게 동기화를 하는 것을 볼 수 있다.