DB

[Redis] 성능과 가용성

Raconer 2024. 3. 26. 23:49
728x90

클러스터를 사용할 때의 성능

  • 클라이언트가 MOVED 에러에 대해 재요청을 해야하는 문제
    • 클라이언트(라이브러리)는 key-node 맵을 캐싱하므로 대부분의 경우 발생하지 않음
  • 클라이언트는 단일 인스턴스의 REdis를 이용할때 와 같은 성능으로 이용 가능
  • 분산 시스템에서 성능은 데이터 일관성(Consistency)과 trade-off가 있음
    • Redis  Cluster는 고성능의 확장성을 제공하면서 적절한 수준의 데이터 안정성과 가용성을 유지하는 것을 목표로 설계

클러스터의 데이터 일관성

  • Redis Cluster는 Strong consistency를 제공하지 않음
  • 높은 성능을 위해 비동기 복제를 하기 때문

클러스터의 가용성 - auto failover

  • 일부 노드(master)가 실패(또는 네트워크 단절) 하더라도 과반수 이상의 master가 남아있고, 사라진 master의 replica들이 있다면 클러스터는 failover되어 가용한 상태가 된다.
  • node timeout동안 과반수의 master와 통신하지 못한 master는 스스로 error state로 빠지고 write요청을 받지 않음
  • 예) master1과 replica2가 죽더라도, 2/3의 master가 남아있고, master1이 커버하던 hash slot은 replica1이 master로 승격되어 커버 할수 있다.

클러스터의 가용성 - replica migration

  • replica가 다른 master로 migrate해서 가용성을 높인다.
  • 예) master3은 replica 1개를 빼도 1개가 남기 때문에 replica3-2는 다른 master로 migrate가능
  •  

728x90