DB

[Redis] 확장성과 가용성을 위한 클러스터_뭔 말 인지 모르겠다.

Raconer 2024. 3. 18. 23:53
728x90

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

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

클러스터의 데이터 일관성

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

Ack와 복제는 순서가 정해져 있지 않으므로, 복제가 완료되기 전에 master가 죽으면 데이터는 유실된다.

클러스터의 가용성 - 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해서 가용성을 높인다.

728x90