neo 1달전 | parent | favorite | on: GN⁺: 분산 락킹 구현 방법 (2016)(martin.kleppmann.com)
Hacker News 의견
  • Temporal을 사용하여 분산 잠금을 구현한 경험이 있으며, 현재까지 잘 작동하고 있음. Temporal의 기능을 활용하여 분산 잠금의 구현이 간단함
  • 블로그 댓글에서 알고리즘의 중요한 점을 놓쳤다는 의견을 남겼으며, 이로 인해 알고리즘의 거부가 약한 점에 기반하고 있다는 점을 지적함
  • 현대 컴퓨터와 API를 사용하면 대략적인 시간 대기를 할 수 있으며, GC 일시 중지는 제한적이고 단조로운 시계가 작동함. 이는 수용 가능한 가정임
  • 자동 해제 메커니즘을 비판하는 것과 알고리즘의 목표와 시스템 모델을 비판하는 것은 다른 문제임
  • Redlock은 다양한 사용 사례에서 성공적으로 사용되었으며, 타임아웃을 적절히 설정하면 경합 조건을 유발하기 어려움. 작은 타임아웃 설정은 설계 오류임
  • 저수준 및 알고리즘 지식을 업데이트 중이며, 재미로 무언가를 만들고 싶지만 대부분의 자료가 장난감 수준이거나 매우 복잡함
  • PostgreSQL을 사용하여 분산 잠금을 구현하며, 트랜잭션을 시작하고 조언 잠금을 얻어 트랜잭션이 해제될 때까지 잠금 상태를 유지함
  • 데이터베이스 연결 상태를 확인하지 않았다는 점을 깨달았으며, 데이터베이스 관련 작업이 아닌 경우 잠금을 잃었을 가능성이 있음
  • Deno와 Deno KV를 사용하여 분산 잠금을 구현했으며, FoundationDB를 기반으로 함
  • Redis를 검토했으나 PostgreSQL을 사용하여 요청을 SET 작업으로 변환하여 정확성을 해결함
  • 많은 엔지니어들이 정확성 문제를 중요하게 여기지 않으며, 메시지가 손실되거나 순서가 잘못될 수 있는 경계 사례가 존재함
  • 잠금에 타임아웃을 설정하는 것이 좋은 아이디어이며, 클라이언트가 충돌할 경우 OS나 감독자가 잠금을 해제함
  • 잠금이 필요 없는 경우, 버전 토큰을 사용하여 데이터 무결성을 유지할 수 있음. UUID와 같은 고유한 값이 사용될 수 있음