مقدمه

Asynq یک چارچوب کار وظایف ناهمزمان برای زبان برنامه‌نویسی Go است که از Redis به عنوان یک صف پیام استفاده می‌کند و قابلیت انعطاف پذیری و سادگی را دارد.

راه‌حل وظایف ناهمزمان Asynq:

  • مشتری وظایف را در صف قرار می‌دهد.
  • سرور وظایف را از صف بازیابی می‌کند و یک موضوع کارگر (goroutine) برای هر وظیفه شروع می‌کند.
  • چندین کارگر موضوع وظایف را به صورت موازی پردازش می‌کنند.

یک صف وظیفه یک مکانیزم برای توزیع کار بین چندین ماشین است. سیستم می‌تواند از چند سرور کارگر و نماینده تشکیل شود تا دسترسی بالا و قابلیت افزایش افقی را حاصل کند.

نمودار صف وظایف

ویژگی‌ها

  • اطمینان از اجرای حداقل یک‌باره وظیفه
  • برنامه‌ریزی وظایف
  • تلاش دوباره برای وظایف شکسته
  • بازیابی خودکار وظیفه هنگامی که یک موضوع کارگر خراب می‌شود
  • صف اولویت‌دار با وزن
  • صف اولویت‌دار دقیق
  • تأخیر کم در اضافه کردن وظایف به دلیل عملیات نوشتن سریع در Redis
  • تکرار وظایف با استفاده از گزینه‌های منحصر به فرد
  • امکان تنظیم زمان‌های انقضا و مهلت برای هر وظیفه
  • امکان تجمیع گروهی از وظایف برای انجام عملیات‌های متوالی چندگانه به صورت دسته‌ای
  • رابط کارگر انعطاف‌پذیر با پشتیبانی از میان‌افزار
  • امکان توقف صف برای متوقف کردن پردازش وظایف از صف
  • وظایف دوره‌ای
  • پشتیبانی از خوشه Redis برای شاره‌گیری خودکار و دسترسی بالا
  • پشتیبانی از نگهبان Redis برای دسترسی بالا
  • ادغام با Prometheus برای جمع‌آوری و نمایش آمارهای صف
  • رابط وب برای بازرسی و کنترل از راه دور صف و وظایف
  • رابط خط فرمان برای بازرسی و کنترل از راه دور صف و وظایف