زمانبندی و وظایف پس زمینه
(بخش: عملیات و مدیریت)
1) هدف
وظایف زمانبندی و پس زمینه اطمینان از عملکرد غیر کاربر از پلت فرم: محاسبات دوره ای، انتشارات مصنوعات، پاکسازی و تکرار صف. اهداف عبارتند از جبرگرایی، تحمل خطا و حسابرسی.
2) طبقه بندی وظیفه
مبتنی بر زمان: برنامه ریزی شده (cron/calendar): پاکسازی، بستن پنجره های RTP، آپلود، بایگانی.
رویداد محور: محرک ها از اتوبوس (PaymentsSettled، PriceListUpdated).
One-Off/Ad-hoc: یک ضربه با TTL.
طولانی مدت: Backoff/sagas، جریان فشرده.
تعمیر و نگهداری: چرخش کلید، بسته بندی مجدد، شاخص، کش گرم کردن.
3) معماری (مرجع)
قطعات:1. Scheduler (control-plane): برنامه های فروشگاه، CAL/cron، پنجره های تعمیر و نگهداری، زمان بندی، محدود کننده ها.
2. Dispatcher: plan → صف (در هر اولویت/مستاجر/منطقه)، قرار می دهد مهلت، کلید idemotent.
3. کارگران: استاتیک/autoscale برای استخر کار ؛ ضربان قلب، اجاره نامه.
4. صف/اتوبوس: FIFO/اولویت، DLQ، پیام های معوق.
5. قفسه/هماهنگی: قفل توزیع (اجاره)، رهبر انتخابات (قایق/ZK/کنسول).
6. Vault/KMS: اسرار JIT، TTL کوتاه.
7. قابلیت مشاهده: ردیابی/معیارها/سیاهههای مربوط، داشبورد، هشدارها.
8. حسابرسی/WORM: دریافت غیر قابل تغییر از اعدام، Merkle-برش.
الگوهای: outbox/CDC، idempotency، جبران (sagas)، فشار پشتی، قطع کننده مدار.
4) برنامه ها: cron و تقویم
Cron v3: ثانیه/دقیقه/ساعت/روز/ماه/روز هفته ؛ پشتیبانی از «/5 «، محدوده ها، لیست ها.
تقویم/استثنا: تقویم کسب و کار، پنجره سکوت، تعطیلات/DST.
منطقه زمانی: نگه داشتن «tz» در کار ؛ شروع زمان محلی مستاجر.
چند منطقه ای: کپی برنامه های هر منطقه یا «منطقه سرب + پیروان» با تخلیه/انتخاب مجدد.
5) صف ها، اولویت ها، SLA ها
کلاس های اولویت: P0 (بحرانی)، P1، P2، P3 ؛ استخرهای کارگری فردی.
SLA/deadline: should _ start _ by ', must _ finish _ by'; جست و خیز - تشدید/retray.
سهمیه و انصاف: کلاه برای وظایف/دقیقه/مستاجر، نشانه برای «انفجار»، پر سر و صدا همسایه انزوا.
اتمام وقت تأخیر/مرئی.
6) رقابت و انسداد
اجاره: اجاره کار با فرمت خودکار (ضربان قلب) ؛ توسط timeout - لغو.
Mutex/semaphores: هر منبع (به عنوان مثال، «لیست قیمت x فقط یک کارگر را می نویسد»).
شاردینگ: توسط 'مستاجر/منطقه/هش (کلید)' ؛ sticky-routing برای حافظه پنهان و محل داده.
انتخاب رهبر: یک رهبر مشاغل «سیستم» را منتشر می کند (به عنوان مثال، «بستن تمام پنجره های RTP»)، پیروان - آماده به کار داغ.
7) قابلیت اطمینان: Retrai، idempotency، deadup
کلید Idempotent: '(task_type، business_id، پنجره)' ؛ همان دریافت را تکرار می کند.
Retrai: بازگشت به عقب نمایشی + jitter، محدودیت تلاش، استراتژی خطا (تلاش مجدد/لغو/جبران).
قرص سمی: انتقال سریع به DLQ پس از شکست N، هشدار به مالک.
Dedup: دیده می شود کش (در حافظه + KV) در پنجره TTL.
دقیقا یک بار اثرات: تایید عوارض جانبی از طریق ورود معامله/رسید.
8) مدیریت وظایف طولانی و سنگین
Chunking: تقسیم به دسته ها، بازرسی/ادامه.
Time-boxing: محدودیت خروج CPU/IO/شبکه ؛ با پیشرفت ذخیره کنید.
Sagas/جبران خسارت: «خنثی کردن» معانی برای مراحل بین سرویس.
Concurrency-caps: محدودیت وظایف همزمان در هر نوع/مستاجر/منطقه.
9) قابلیت مشاهده و معیارها
ردیابی: 'trace _ id'، مراحل حماسه، تماس های خارجی.
معیارها (SLI):- تاخیر برای شروع، صف (طول، سن p95).
- نرخ موفقیت، نرخ خطا، نرخ تلاش مجدد.
- تاخیر p50/p95، زمان برای تکمیل.
- هزینه در هر 1K وظایف، خروج/ورود.
- نرخ DLQ، نرخ سم قرص.
- P0 شروع ≤ 60 ثانیه، P1 ≤ 5 دقیقه ؛ موفقیت ≥ 99 5%; DLQ ≤ 0 1%; طراوت ≤ 30 ثانیه p95.
10) حسابرسی و اثبات پذیری
رسید: 'receipt _ hash' برای شروع/موفقیت/خطا، امضای DSSE برای انواع بحرانی (پرداخت، لیست قیمت، RTP).
WORM: ذخیره سازی سیاهههای مربوط به اجرا و مانیفست کار.
زنجیره ای از بازداشت: که تحویل/تایید/تغییر برنامه ؛ بررسی های SoD
11) امنیت و دسترسی
RBAC/ABAC/ReBAC: که ایجاد/تصویب/اجرا می شود ؛ SoD: «ایجاد پرداخت» ≠ «تایید».
اسرار JIT: کارگر درخواست نشانه با TTL کوتاه در مورد دامنه مشکل.
جداسازی: استخر کارگر در هر مستاجر/منطقه/شبکه ؛ سندباکس اعدام
بهداشت PII: ماسک کردن/نشانه گذاری، ممنوعیت ورود به سیستم اولیه.
12) FinOps و هزینه
بودجه/کلاه-هشدار در محاسبه/ذخیره سازی/خروج.
کارگران مقیاس خودکار توسط صف و SLO.
کلاس های ذخیره سازی: داغ (7-30 روز) → OLAP (6-24 ماه) → آرشیو.
برنامه ریزی هزینه آگاه: راه اندازی پنجره در «ساعت ارزان»، خروج از محدودیت.
13) مدل داده (ساده شده)
14) قراردادهای API (مدیریت/ادغام)
'POST/schedules' - یک برنامه (cron/cal، tz، windows) ایجاد کنید.
'POST/jobs' - قرار دادن ad-hoc ؛ return 'job _ id', 'receipt _ hash'.
'GET/jobs/{ id}' - وضعیت/ورود/رسید.
'POST/jobs/{ id }/cancel' - لغو با جبران خسارت.
GET/صف/آمار - طول, عقب ماندگی, P95.
Вебхуки: 'JobStarted', 'JobSucceed', 'JobFailed', 'JobDropToDLQ', 'SLOViolated'.
15) کتاب های بازی (سناریوهای معمولی)
Retry-storm: فعال کردن پشتیبان گیری جهانی، افزایش زمان وابستگی، فعال کردن قطع کننده مدار، تقسیم دسته ها.
بهمن DLQ: دریافت را متوقف کنید، تجزیه DLQ را اولویت بندی کنید، وظایف جدید را بافر کنید.
رهبر سقوط کرد: انتخاب مجدد، تأیید «انتشارات دوگانه» توسط idempointency، حسابرسی.
ارائه دهنده آویزان (PSP/KYC): مسیر به ذخیره، کاهش فرکانس نظرسنجی/webhooks، انتقال معاملات به قرنطینه.
اسرار کارگر به بیرون درز: لغو کلید, چرخش, جستجو برای «غیر طبیعی» راه اندازی در 30 روزها, بررسی حقوق.
16) ویژگی های iGaming/fintech
پرداخت/پرداخت: مشاغل ناهمزمان با رسید، قرنطینه معاملات «خاکستری»، تکرار صف با deduplication.
ویندوز RTP/محدودیت: بسته شدن تقویم, مشاهده در مقابل RTP نظری, خودکار مکث تبلیغی زمانی که دست خوش پیشامد میشه.
لیست قیمت/FX/مالیات: انتشارات برنامه ریزی شده، نسخه های مصنوعی، ناتوانی نیروی ذخیره سازی.
وابسته: آشتی تبدیل, dedup webhooks, اعمال/امضا, اختلافات سپردن.
17) معیارهای کیفیت (مجموعه نمونه)
برنامه پیروی: سهم وظایف آغاز شده در پنجره ≥ 99٪.
تاخیر صف p95: p0 ≤ 60 درجه سانتیگراد، P1 ≤ 5 دقیقه.
موفقیت/تلاش مجدد/نرخ DLQ: ≥ 99. 5% / ≤ 0. 4% / ≤ 0. 1%.
خطای عدم توانایی: ≤ 0. 01%.
مشاغل Cost/1k و خروج/شغل - در بودجه.
کامل بودن حسابرسی: 100٪ وظایف مهم با رسید.
18) RACI
19) چک لیست پیاده سازی
- کلاس های وظیفه، اولویت ها و SLA ها را برجسته کنید ؛ تقویم ها و منطقه های زمانی را تعریف کنید.
- استقرار برنامه ریز/دیسپچر/صف/کارگران با انتخاب رهبر و Sharding.
- معرفی idempotency، retrays، DLQ، جبران (sagas).
- پیکربندی اسرار RBAC/ABAC/ReBAC، SoD و JIT برای کارگران.
- فعال کردن آثار/متریک/سیاهههای مربوط، داشبورد و هشدار ؛ SLO и بودجه خطا
- صورتحساب امضا شده (DSSE) و سیاهههای مربوط به WORM برای انواع بحرانی.
- Autoscale و کلاه هشدار (محاسبه/ذخیره سازی/خروج).
- Playbooks: سعی کنید طوفان، بهمن DLQ، شکست رهبر، تخریب ارائه دهنده.
- تست ها: GameDay در هر playbook، تزریق تاخیر/خطا.
- بررسی منظم برنامه ها، انسداد صف و ROI های اتوماسیون.
20) سوالات متداول
چرا کرون کافی نیست ؟
بدون صف، idemotency، قفل و حسابرسی، cron در تصادفات و مناطق زمانی شکسته می شود.
آیا می توان زمان و رویداد را با هم ترکیب کرد ؟
بله: کرون - بیمه برای گرفتن ؛ حوادث - برای واکنش پذیری.
چگونه «دقیقا یک بار» را انجام دهیم ؟
dedup کلید، اثرات معاملاتی ورود به سیستم، رسید و عوارض جانبی idemotent.
با شغلهای «طولانی» چه کنیم ؟
Chunk, checkpointها, time-boxing, توانایی قطع کردن و ادامه دادن.
چگونه «غذا» نخوریم ؟
مقیاس خودکار در صف ها و SLO ها، ساعت های ارزان قیمت برای مشاغل سنگین، کلاه های سخت خروج/محاسبه.
خلاصه: وظایف زمانبندی و پس زمینه خط تولید پلت فرم است. با تعبیه برنامه ها و صف ها، idempotence، قفل ها و مشاهده پذیری، اضافه کردن رسید/ممیزی، جداسازی مستاجر و کنترل FinOps، شما می توانید مهلت های قابل پیش بینی، بازیابی سریع و عملیات قانونی سازگار در هر منطقه و بار.