Backend/Redis

Redis Cluster 동작방식

findmypiece 2021. 4. 28. 09:02
728x90

클러스터 구동시 노드별로 데이터를 저장할 수 있는 hashslot을 할당받게 된다.

그리고 데이터 저장시 Redis 자체 해시 알고리즘에 의해 key에 맞는 hashslot이 선택되어 저장된다.

데이터를 읽을 때에는 역시 자체 해시 알고리즘에 의해 key 에 맞는 hashslot에서 데이터를 읽게 된다.

즉, 특정 키는 특정노드에만 저장된다.

 

그런데 어쨋든 클라이언트 입장에서는 이러한 Read/Write 는 를 수행하려면 특정 노드에 일단 연결이 되어야 한다.

예를 들어 1~3 까지의 노드가 있고 A key에 해당하는 hashslot이 3노드에 할당된 상태라고 가정해보자.

그런데 클라이언트가 1번 노드에 연결되어 A key를 Read/Write 하려고 하면 어떻게 될까?

이때는 3번 노드로 Redirection 후 Read/Write 를 수행하게 된다.

이게 가능한 이유는 모든 노드가 해시 알고리즘을 공유하고 있기 때문이다.

 

Redis Cluster 구성에서 클라이언트가 접속을 시도할 경우 어떤 방식으로 노드가 선택되나?

아마도 라운드로빈 이겠지?

728x90