소개
Asynq는 Go 언어를 위한 비동기 작업 프레임워크로, Redis를 메시지 대기열로 사용하며 확장성과 간결함을 갖추고 있습니다.
Asynq 비동기 작업 솔루션:
- 클라이언트는 작업을 대기열에 넣습니다.
- 서버는 대기열에서 작업을 검색하고 각 작업에 대해 워커 스레드(goroutine)를 시작합니다.
- 여러 워커 goroutine이 작업을 병렬로 처리합니다.
작업 대기열은 여러 기계에 작업을 분배하는 메커니즘입니다. 시스템은 여러 작업 서버와 에이전트로 구성될 수 있어 고가용성과 수평 확장성을 달성할 수 있습니다.
특징
- 최소 한 번의 작업 실행 보장
- 작업 스케줄링
- 실패한 작업 재시도
- 워커 스레드가 충돌했을 때 자동 작업 복구
- 가중치 우선순위 대기열
- 엄격한 우선순위 대기열
- 빠른 Redis 쓰기 작업으로 인한 작업 추가의 지연 시간이 낮음
- 고유한 옵션을 사용하여 작업 중복
- 각 작업에 대한 타임아웃 및 마감 기한 설정 허용
- 일괄적으로 여러 연속 작업을 수행하기 위해 여러 작업 그룹을 집계하는 것을 허용
- 미들웨어 지원으로 유연한 핸들러 인터페이스
- 큐를 일시 중지하여 대기열에서 작업 처리를 멈추게 함
- 주기적인 작업
- 자동 분할 및 고가용성을 위한 Redis Cluster 지원
- 고가용성을 위한 Redis Sentinel 지원
- 큐 메트릭을 수집하고 시각화하기 위한 Prometheus 통합
- 대기열 및 작업을 검사하고 원격으로 제어하기 위한 웹 인터페이스
- 대기열 및 작업을 검사하고 원격으로 제어하기 위한 명령줄 인터페이스