16P by xguru 5달전 | favorite | 댓글과 토론
  • 애플리케이션 데이터와 작업 대기열에 동일한 데이터베이스(Postgres)를 사용하도록 권장. 의존성 최소화
  • 다른 데이터베이스 변경과 함께 트랜잭션 방식으로 작업을 큐에 대기시킴으로써 분산 시스템 전체 클래스의 문제를 방지할 수 있음
  • Transactional enqueueing : 작업은 트랜잭션이 커밋되면 큐에 대기하고, 트랜잭션이 롤백되면 제거되며, 커밋될 때까지 작업에 표시되지 않도록 보장
  • Postgres의 NOTIFY 기능을 활용하여 작업 준비가 완료되는 즉시 작업 큐가 작업자를 깨워 작업을 시작할 수 있어, 작업 시작 전 평균 지연 시간을 밀리초 단위로 줄일 수 있음
  • Postgres의 바이너리 프로토콜을 사용하고, 데이터베이스와의 라운드 트립을 최소화하여 효율성을 높임
    • Bulk Job Insert는 COPY FROM을 사용하여 효율적으로 수행