8P by xguru 16시간전 | ★ favorite | 댓글과 토론
  • PostgreSQL 클러스터의 상태를 실시간으로 감지하기 위해 설계된 사이드카형 마이크로서비스
  • 호스트의 생존 여부, 마스터/리플리카 구분, 리플리카 지연 시간을 즉시 확인 가능
  • 경량·고성능 구조: 메모리 사용량 약 9MiB, 요청당 낮은 CPU 부하로 초당 최대 9000 요청 처리
  • 모든 데이터는 메모리 기반 응답으로 제공되어 요청 지연 최소화
  • 백그라운드에서 주기적으로 PostgreSQL 호스트 상태를 폴링하고, 결과를 HTTP API로 노출(Plain/JSON 응답)
  • 주요 API 엔드포인트
    • /master: 현재 마스터 호스트 반환
    • /replica: 라운드로빈 알고리듬으로 선택된 리플리카 반환
    • /sync_by_time, /sync_by_bytes: 시간 또는 바이트 단위 동기화 상태 기준 리플리카 반환
    • /hosts: 모든 호스트의 상태 목록(JSON)
    • /status: 특정 호스트의 상세 상태 조회
  • 환경 변수 기반 설정 : 연결 타임아웃, 허용 지연 한도, 폴링 주기 등 세밀한 제어 가능
  • 단일 writer와 다수의 reader 구조로 된 락프리(lock-free) 설계로 빠른 읽기 응답과 최신 데이터 유지
    • 일시적 데이터 불일치 가능성을 감수하고 응답 속도 최적화
  • 서비스 시작·종료 및 상태 변경 이벤트를 stdout/stderr로 기록하며, failover, 복구, 동기화 상태 변화를 실시간 표시
  • 마스터-리플리카 전환 시나리오를 프록시 기반으로 시뮬레이션 가능