소개

Asynq는 Go 언어를 위한 비동기 작업 프레임워크로, Redis를 메시지 대기열로 사용하며 확장성과 간결함을 갖추고 있습니다.

Asynq 비동기 작업 솔루션:

  • 클라이언트는 작업을 대기열에 넣습니다.
  • 서버는 대기열에서 작업을 검색하고 각 작업에 대해 워커 스레드(goroutine)를 시작합니다.
  • 여러 워커 goroutine이 작업을 병렬로 처리합니다.

작업 대기열은 여러 기계에 작업을 분배하는 메커니즘입니다. 시스템은 여러 작업 서버와 에이전트로 구성될 수 있어 고가용성과 수평 확장성을 달성할 수 있습니다.

작업 대기열 다이어그램

특징

  • 최소 한 번의 작업 실행 보장
  • 작업 스케줄링
  • 실패한 작업 재시도
  • 워커 스레드가 충돌했을 때 자동 작업 복구
  • 가중치 우선순위 대기열
  • 엄격한 우선순위 대기열
  • 빠른 Redis 쓰기 작업으로 인한 작업 추가의 지연 시간이 낮음
  • 고유한 옵션을 사용하여 작업 중복
  • 각 작업에 대한 타임아웃 및 마감 기한 설정 허용
  • 일괄적으로 여러 연속 작업을 수행하기 위해 여러 작업 그룹을 집계하는 것을 허용
  • 미들웨어 지원으로 유연한 핸들러 인터페이스
  • 큐를 일시 중지하여 대기열에서 작업 처리를 멈추게 함
  • 주기적인 작업
  • 자동 분할 및 고가용성을 위한 Redis Cluster 지원
  • 고가용성을 위한 Redis Sentinel 지원
  • 큐 메트릭을 수집하고 시각화하기 위한 Prometheus 통합
  • 대기열 및 작업을 검사하고 원격으로 제어하기 위한 웹 인터페이스
  • 대기열 및 작업을 검사하고 원격으로 제어하기 위한 명령줄 인터페이스