مقدمة
Asynq هو إطار عمل للمهام اللا متزامنة للغة Go، والذي يستخدم Redis كطابور رسائل ويتمتع بقابلية التوسع والبساطة.
حل مهام Asynq اللا متزامنة:
- يقوم العميل بوضع المهام في الطابور.
- يقوم الخادم بالحصول على المهام من الطابور وبدء خيط عامل (goroutine) لكل مهمة.
- عدة خيوط عامل تعالج المهام بشكل متوازٍ.
طابور المهام هو آلية لتوزيع العمل عبر عدة أجهزة. يمكن أن يتكون النظام من عدة خوادم عاملة ووكلاء لتحقيق التوافر العالي والقابلية للتوسع الأفقي.
الميزات
- يضمن تنفيذ المهمة مرة واحدة على الأقل.
- جدولة المهام.
- إعادة محاولة تنفيذ المهام الفاشلة.
- استعادة المهام تلقائيًا عند تعطّل خيط العامل.
- طابور أولوية مرجحة.
- طابور أولوية صارم.
- تأخر منخفض في إضافة المهام بسبب العمليات السريعة للكتابة في Redis.
- تكرار المهام باستخدام خيارات فريدة.
- السماح بتحديد مهلة زمنية ومواعيد نهاية لكل مهمة.
- السماح بتجميع مجموعة من المهام لأداء عمليات متتالية متعددة في دفعات.
- واجهة معالج مرنة مع دعم للوسيطة.
- السماح بإيقاف الطابور لتوقيف معالجة المهام من الطابور.
- المهام الدورية.
- دعم Redis Cluster للتجزئة التلقائية والتوافر العالي.
- دعم Redis Sentinel للتوافر العالي.
- التكامل مع Prometheus لجمع وتصور مقاييس الطابور.
- واجهة ويب لفحص والتحكم عن بعد في الطوابير والمهام.
- واجهة سطر الأوامر لفحص والتحكم عن بعد في الطوابير والمهام.