اصل ماجرا

برای اجرای کارهای دوره‌ای مثل ارسال یادآوری یا پاک‌سازی داده‌ها، ساده‌ترین راه استفاده از کرون روی سرور است. در سامانه‌های بزرگ‌تر، کارگرهای پس‌زمینه یا کرون‌جاب‌های کوبرنتیس به‌کار گرفته می‌شود تا بار API جدا بماند و مقیاس‌پذیری حفظ شود. برای جلوگیری از اجرای همزمان روی چند سرور، قفل توزیعی یا صف پیام استفاده می‌شود.

متن کامل ترجمه‌شده

تصور کنید که شما یک برنامه را ایجاد می کنید که نیاز به انجام یک کار هر 5 دقیقه است. مثال ها: - ارسال یادآوری های یادآوری - بررسی تاریخ پایان محصول - تولید گزارش های روزانه - Sync داده های از API های شخص ثالث - پاک کردن رکورد های قدیمی از پایگاه داده یک سوال معمولی برای شروع است: اگر هیچ کس برنامه من را باز کند، چه کسی این کارها را هر 5 دقیقه انجام می دهد؟ اجازه دهید به نظر برسیم که چگونه این کار در تولید انجام می شود. گزینه 1: Cron Job در یک سرور ساده ترین راه حل استفاده از یک Cron Job است. یک کار cron یک برنامه ریزیگر ساخته شده در لینوکس است که می تواند فرمان ها را در دوره های مشخصی اجرا کند. مثال: /5 * * * * * یادآوری نویدJob.js این معنی است: هر 5 دقیقه اجرا یادآوری Job.js برای پروژه های کوچک - ابزارServer Down ↓ Cron Stops ↓ Jobs Missed برای برنامه های مهم، این غیر قابل قبول است. تصور کنید: - کارهای پرداخت - پردازش سفارش - تمیز کردن OTP - تجدید سفارش از دست دادن حتی یک اجرا می تواند مشکلات ایجاد کند. گزینه 2: کارگران پایه اختصاصی سیستم های بزرگ سرورهای API و کارگران پایه را جدا می کنند. معماری: کاربران │ ▼ سرورهای API │ ▼ پایگاه داده ▲ │ کارگر خدمات │ ▼ مزایای کار برنامه ریزی شده: - API ها سریع باقی می مانند - کارها به درخواست های کاربر تأثیر نمی گذارند - آسان تر به طور مستقل گسترش گزینه 3: Kubernetes CronJobs برنامه های کلاهبرداری مدرن اغلب در Kubernetes اجرا می شود. Kubernetes یک منبع به نام CronJob ارائه می دهد. مثال: برنامه ریزی: “/5 * * * *” هر 5 دقیقه Kubernetes به طور خودآرشیو: Kubernetes │ ▼ CronJob │ ▼ New Container │ ▼ Execute Job Advantages: - Automatic retries - Auto-healing - Easy deployment - Cloud-native Preventing Duplicate Execution فرض کنید که شما 3 سرور دارید. Server A Server B Server C اگر همه سه کار را یکسان انجام دهید: ارسال آگهی ارسال آگهی ارسال آگهی کاربران سه بار همان آگهی را دریافت می کنند. نه خوب. Locking Distributed برای اطمینان از اینکه تنها یک سرور کار را انجام دهد، شرکت ها از قفل های توزیع شده استفاده می کنند. انتخاب های محبوب: - Redis Lock - Database Lock - ZooKeeper - etcd Flow: Worker Starts │ ▼ Acquire Lock │ ▼ Lock Success ? / Yes \ No │ ▼ Run Job Exit تنها یک کارمندبه طور معمول: کارگر 1 کارگر 2 کارگر 3 │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────Cron - Kubernetes CronJobs - Redis - RabbitMQ - Apache Kafka - AWS EventBridge - AWS EventBridge - Google Cloud Schedulerآرشیو: Cron Scheduler │ ▼ Expiry Checker │ ▼ Database Query │ ▼ Message Queue │ ▼ Notification Workers │ ▼ Firebase / APNs Key Takeaway یک وظیفه برنامه ریزی شده که هر 5 دقیقه انجام می شود معمولاً توسط ترافیک کاربر مدیریت نمی شود. سیستم های تولید استفاده: - Cron Jobs - Background Workers - Kubernetes CronJobs - Message Queues - Distributed Locks هر چه بزرگتر است، اعتماد، بازخوردها و جلوگیری از دوگانه شدن مهمتر است.

چرا مهمه؟

کارهای دوره‌ای بدون ترافیک کاربر باید به‌صورت مستقل اجرا شوند؛ در غیر این صورت سرویس‌های حساس مثل تسویه‌حساب یا پاک‌سازی توکن دچار نقص می‌شوند. سرورهای متعدد می‌توانند یک‌کار را چند بار انجام دهند؛ قفل توزیعی یا صف پیام این مشکل را رفع می‌کند. خواننده باید بداند چه ابزارهایی برای اطمینان از اجرا و جلوگیری از تکرار وجود دارد تا سامانه‌اش پایدار بماند.

به درد کی می‌خوره؟

• توسعه‌دهندگان بک‌اند • مهندسان DevOps • مدیران محصول • تیم‌های عملیات

تو عمل چی کار کنیم؟

با خواندن این مطلب می‌توانید برای برنامه‌تان یک کرون ساده یا کرون‌جاب کوبرنتیس تنظیم کنید، سپس با Redis یا دیتابیس قفل توزیعی از تکرار جلوگیری کنید. اگر سامانه‌تان بزرگ شد، کارها را به صف پیام (RabbitMQ یا Kafka) بفرستید تا کارگرهای مستقل پردازش کنند و مقیاس‌پذیری و تحمل خطا افزایش یابد.

نظر Blue IT News

پیشنهاد می‌شود برای برنامه‌های حساس از ترکیب کرون‌جاب کوبرنتیس و صف پیام استفاده کنید؛ این ترکیب هم زمان‌بندی دقیق و هم قابلیت بازنگری خودکار را فراهم می‌کند.

<div class=“disclosure”> این صفحه ترجمه و تفسیر کاملی از گزارش اصلی Dev است که توسط تیم تحریریه بلو آی تی نیوز به فارسی ترجمه و تحلیل شده. برای مشاهده نسخه اصلی، به منبع مراجعه کنید. </div>