وردپرس تو ترافیک بالا مقصر کندیها نیست، Redis Queue در وردپرس
با توجه به اینکه توییت قبلی مربوط به WPMgr مورد استقبال قرار گرفت، یه پروژه دیگه که البته آزمایشیه و بیشتر جنبه بررسی و یادگیری معماری داره براتون آوردم.
وردپرس تو ترافیک بالا لزوما مقصر کندی نیست. خیلی وقت ها مشکل از موندن تسک های سنگین توی چرخه Sync Request-Response و تکیه روی WP-Cron عـه!
اکثر افراد وقتی سایت زیر لود کم میاره اولین کارشون ارتقای منابع سروره، در حالی که باتل نک واقعی میتونه بلاک شدن PHP-FPM سر تسک های زمانبری مثل Image Processing، ارسال ایمیل یا سینک API ها باشه.
پروژه Redis Queue اومده همین مسئله رو با بردن Job ها به Redis و پردازش اونها توسط Worker حل کنه. Priority، Delayed Job، Retry، REST API، Rate Limit و حتی Job های آماده برای Image Processing و Email هم داره.
چیزی که برای من جالب بود خود معماری کدبیسه. تفکیک Queue Manager از Job Processor، Interface ها و مدل مشخص Lifecycle برای Job ها. حتی اگر پروژه آزمایشی باشه، خوندن ساختار و پترنهای کدش برای یادگیری تفکیک بار کاری توی سیستمهای سنتی شدیدا ارزشمنده.
مهارت واقعی اینجا اینه که بفهمی کجا باید I/O رو از Request اصلی جدا کنی و بار کاری رو Async کنی، نه اینکه برای هر مشکل Performance فقط CPU و RAM بیشتری بخری.
سورس پروژه: https://github.com/soderlind/redis-queue