مقدمه
Asynq یک چارچوب کار وظایف ناهمزمان برای زبان برنامهنویسی Go است که از Redis به عنوان یک صف پیام استفاده میکند و قابلیت انعطاف پذیری و سادگی را دارد.
راهحل وظایف ناهمزمان Asynq:
- مشتری وظایف را در صف قرار میدهد.
- سرور وظایف را از صف بازیابی میکند و یک موضوع کارگر (goroutine) برای هر وظیفه شروع میکند.
- چندین کارگر موضوع وظایف را به صورت موازی پردازش میکنند.
یک صف وظیفه یک مکانیزم برای توزیع کار بین چندین ماشین است. سیستم میتواند از چند سرور کارگر و نماینده تشکیل شود تا دسترسی بالا و قابلیت افزایش افقی را حاصل کند.
ویژگیها
- اطمینان از اجرای حداقل یکباره وظیفه
- برنامهریزی وظایف
- تلاش دوباره برای وظایف شکسته
- بازیابی خودکار وظیفه هنگامی که یک موضوع کارگر خراب میشود
- صف اولویتدار با وزن
- صف اولویتدار دقیق
- تأخیر کم در اضافه کردن وظایف به دلیل عملیات نوشتن سریع در Redis
- تکرار وظایف با استفاده از گزینههای منحصر به فرد
- امکان تنظیم زمانهای انقضا و مهلت برای هر وظیفه
- امکان تجمیع گروهی از وظایف برای انجام عملیاتهای متوالی چندگانه به صورت دستهای
- رابط کارگر انعطافپذیر با پشتیبانی از میانافزار
- امکان توقف صف برای متوقف کردن پردازش وظایف از صف
- وظایف دورهای
- پشتیبانی از خوشه Redis برای شارهگیری خودکار و دسترسی بالا
- پشتیبانی از نگهبان Redis برای دسترسی بالا
- ادغام با Prometheus برای جمعآوری و نمایش آمارهای صف
- رابط وب برای بازرسی و کنترل از راه دور صف و وظایف
- رابط خط فرمان برای بازرسی و کنترل از راه دور صف و وظایف