본문 바로가기

Data Base

(4)
Redis에서 Replica가 느려도 되는 이유 master가 하는 일이 replica가 데이터를 처리하는 단계보다 많기 때문에
Redis - Master / Replica 통신 과정 저번 글에서는 Master와 Replica에 대해서 어떻게 fsync와 psync가 일어나는 지 알아보았으니 이번에는 Master과 Replica가 서로 어떻게 통신하는 과정을 그림으로 설명하려고 한다. 일단 Redis의 기본 배경부터 설명하고 가면 기본적으로 redis는 총 4개의 노드로 구성된다 . 1개의 Master, 2개의 Replica를 가지고 1개의 Sentinel으로 구성되는 데 아래 그림에서는 Master와 Replica의 통신과정을 설명하기위해서 Sentienl은 생략했다. Master를 기준으로 봤을 때 Server와 client를 구분해야한다. 기본적으로 server에게 명령어를 던져주는 존재를 Redis에서는 Client라고 보고 있어서 만약 Server-Replica가 기준이 된다..
Redis - Master / Replica(Slave) 의 구성 및 복제 Redis는 기본적으로 모든 명령을 처리하는 Master , Master의 복제본인 Replica(Slave/clone), Master와 Slave의 구조를 확인하고 잘동작하고 있는 지 확인하는 Sentinel 이렇게 3개의 노드들이 존재한다. 기본적인 Redis의 구조는 Master - Replica(Slave) - Replica(Slave) 구조로 아래와 같은 구성을 하고 있다. ##Slave란 용어는 Redis 5.0.0부터 Clone을 거쳐 Replica라는 단어로 바뀌었습니다. 과거 redis 버전을 구분하기위해서 과거버전은 slave라는 용어를 사용함 Master Redis에서 두뇌의 역할 모든 명령어(Read / Write 포함) 처리를 다함 Master가 failover상황시 Redis는 ..
Redis - Server와 Client TCP/IP 통신 Redis는 Sever와 Client에서 TCP/IP를 통해 통신을 주고 받는다. Server와 Client 의 TCP/IP 통신 Redis의 코드(server.c) int main(int argc, char **argv) { ... initServer(); ... } socket 통신을 하는 부분은 initServer하는 부분에서 만들어지게 되는데 socket, bind, listen, accept가 만들어지게 된다. initSever()를 살펴보자면 void initServer(void) { int j; ... if (server.port != 0 && listenToPort(server.port,server.ipfd,&server.ipfd_count) == C_ERR) exit(1); if (ser..