Giới thiệu
Asynq là một framework nhiệm vụ bất đồng bộ cho ngôn ngữ Go, sử dụng Redis như một hàng đợi thông điệp và sở hữu tính mở rộng và đơn giản.
Giải pháp nhiệm vụ bất đồng bộ của Asynq:
- Client đặt các nhiệm vụ vào hàng đợi.
- Server lấy các nhiệm vụ từ hàng đợi và bắt đầu một thread worker (goroutine) cho mỗi nhiệm vụ.
- Nhiều worker goroutines xử lý các nhiệm vụ song song.
Hàng đợi nhiệm vụ là một cơ chế phân phối công việc trên nhiều máy. Hệ thống có thể bao gồm nhiều máy chủ worker và đặc vụ để đạt được khả năng sẵn có cao và tính mở rộng theo chiều ngang.
Đặc điểm
- Đảm bảo thực hiện nhiệm vụ ít nhất một lần
- Lập lịch nhiệm vụ
- Thử lại nhiệm vụ thất bại
- Khôi phục nhiệm vụ tự động khi một thread worker gặp sự cố
- Hàng đợi ưu tiên có trọng số
- Hàng đợi ưu tiên nghiêm ngặt
- Độ trễ thấp khi thêm nhiệm vụ do hoạt động ghi nhanh trong Redis
- Nhân bản nhiệm vụ bằng các tùy chọn duy nhất
- Cho phép thiết lập thời gian chờ và hạn chót cho mỗi nhiệm vụ
- Cho phép tổng hợp một nhóm nhiệm vụ để thực hiện nhiều hoạt động liên tục một cách theo lô
- Giao diện xử lý linh hoạt với hỗ trợ cho middleware
- Cho phép tạm dừng hàng đợi để ngừng xử lý nhiệm vụ từ hàng đợi
- Nhiệm vụ định kỳ
- Hỗ trợ Redis Cluster cho phân vùng tự động và khả năng sẵn có cao
- Hỗ trợ Redis Sentinel cho tính sẵn có cao
- Tích hợp với Prometheus để thu thập và minh họa số liệu hàng đợi
- Giao diện web để kiểm tra và kiểm soát hàng đợi và nhiệm vụ từ xa
- Giao diện dòng lệnh để kiểm tra và kiểm soát hàng đợi và nhiệm vụ từ xa