Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 메시지를 받은 시간은 항상 보낸 시간보다 나중이지만 네트워크 지연 변동성 대문에 얼마나 나중인지는 알 수 없다.
  • 이를 해결하기 위해 가장 널리 쓰이는 해결방안은 NTP를 쓰는 방안이다.
  • 단조 시계와 일 기준 시계
    • 현대 컴퓨터는 최소 이 두가지 시계는 반드시 갖고 있다.
    • 일 기준 시계는 직관적으로 시계에 기대하는 역할을 한다.
      • 특정 달력에 따라 현재 날짜와 시간을 반환한다.
    • 단조 시계는 타임아웃이나 서비스 응답시간 같은 지속 시간을 재는 데 적합하다.
      • 한 시점에서 단조 시계의 값을 확인하고 어떤 일을 한 후 나중에 다시 시계를 확인할 수 있다.
      • 두 값의 차이로 시간이 얼마나 흘렀는지 알 수 있지만, 이 절대값이 의미 있는 건 아니다.
  • 시계 동기화와 정확도
    • 단조 시계는 동기화가 필요 없지만 일 기준 시계는 NTP 서버나 다른 외부 시간 출처에 맞춰 설정돼야 유용하다.
    • 시계가 정확한 시간을 알려주게 하는 방법은 기대만큼 신뢰성이 있거나 정확하지 않다.
    • 컴퓨터 시계는 드리프트(더 빠르거나 더 느리거나) 현상이 생기기 때문에 아주 정확하지는 않다.
      • 드리프트는 장비의 온도에 따라 발생한다.
    • NTP 클라이언트는 여러 서버에 질의를 보내고 다른 것과 큰 차이가 나는 값을 무시하므로 생각보다 상당히 견고하다.
  • 대부분의 시계는 잘 동작하지만 시계가 잘못된 경우에도 반드시 대비해야 한다.
  • 이벤트 순서화용 타임스탬프
    • 가장 나중의 타임스탬프 값을 최종값으로 인정하는 충돌 해소 전략을 최종 쓰기 전략이라 한다.
    • 문제는 애플리케이션에 어떤 오류도 없었지만 임의의 양의 데이터가 조용히 유실되는 문제가 발생할 수 있다.
    • "최근"의 정의는 로컬 일 기준 시계에 의존하며 그 시계는 틀릴 수 있다는 것을 반드시 알아야 한다.
  • 일 기준 시계는 마이크로초 해상도로 읽을 수 있지만, 실제로 그 정도의 정확성을 제공한다는 의미가 아니다.
  • 전역 스냅용 동기화된  시계
    • 분산 환경에서 가장 흔한 스냅숏 격리 구현은 단조 증가하는 트랜잭션 ID를 사용하는 방안이다.
    • 이 용도로 시계 동기화를 쓰는 방안이 활발히 연구되고 있지만 실제로 주류 데이터베이스에 구현된 사례는 없다.
  • 시계를 통해 분산 시스템에서 리더 노드를 결정하면 위험할 수 있다.
    • 분산 시스템에서 스레드는 오랫동안 멈출 수 있다.
    • 시계 측정도 마찬가지다.
    • 후에 다룰 합의 알고리즘을 사용해야 한다.

요약

  • 분산 시스템에서는 흔히 우리가 신뢰할만하다 생각한 것 중 진짜 신뢰할 수 있는 게 많지 않다.
  • 신뢰한다 믿는 것들이 망가질 때를 대비하고 설계해야 한다.