مجید
2 سال پیش توسط مجید مطرح شد
3 پاسخ

اولویت اجرای تسک در NodeJs

سلام
نمیدونم هنوان سوالم درسته یا نه. تووی استفاده از نود هم تازه کارم.ممنون میشم فقط جواب سوالم رو بدید و راهنمایی کنید.
تووی یه پروژه با لاراول یه ماژول داریم که هر چند دقیقه یکبار اجرا میشه (صف) و نزدیک به 1000 درخواست به یک سرور دیگه میده و نتایج رو پردازش می کنه.
اینو اوردم با NodeJs پیاده سازی کردم و زمان اجرا از 20 دقیقه به کمتر از 5 دقیقه رسیده!!! واسه پیاده سازی صف از Bull استفاده کردم.
دیتاها که پردازش میشه از طریق چند API کاربران می تونن به داده های پردازش شده دسترسی پیدا کنند. واسه اینکار هم تووی سرور از fastify استفاده کردم.
مشکل اینجاست وقتی این صف اجرا میشه هر Request که به این سرور زده میشه(یعنی یک کاربر API رو فراخوانی می کنه) تا این پروسس(هزار درخواست تووی صف) انجام نشه پاسخی دریافت نمیشه.
دلیلیش چیه؟و چطور این مشکل رو میشه حل کرد.


ثبت پرسش جدید
متین طیبی نیا
تخصص : backend
@MatinTayebi 2 سال پیش مطرح شد
0

سلام
یک سوال الان اینظوریه که هر درخواستی از سمت کاربر میاد وارد صف قرار میگیره ؟
اگر اینطوری هستش .
تو این لینک توضیح داد که چطوری برای درخواست ها اولویت بذارید (یه خورده باید اسکرول کنی ،اگه تو صفحه سرچ کنی priority میاره برات )
یک سری لینک های دیگم میزارم چند مثال در موردش زدن
لینک1
لینک2


مجید
@majid4073 2 سال پیش آپدیت شد
0

ممنون
همه درخواست ها به صف ارسال نمیشه تووی این ماژول فقط دریافت داده ها هست

cron.schedule('15-59/10 9 * * 1,2,3,6,0', function() {
        addJobs();
      });
      cron.schedule('*/10 10-23 * * 1,2,3,6,0', function() {
        addJobs();
      });

این تیکه کد کلا هر 10 دقیقه یکبار اجرا میشه و دادهای جدید رو میگیره که تقریبا هزار بار درخواست به یک سرور دیگه ارسال می کنه.داده ها رو میگیره پردازش و ذخیره می کنه.
وقتی این کد اجرا میشه بین 3 تا 5 دقیقه زمان میبره تا دیتاهای جدید ذخیره بشه . تووی این زمان اگه کاربری درخواستی بده به خود این ماژول جوابش تا این صف کارها رو انجام نده داده نمیشه. درخواست های کاربران رو به صف نمیفرستیم.(باید بفرستیم؟ )

Completed job 19163 successfully
Completed job 19164 successfully
Completed job 19165 successfully
Completed job 19166 successfully
Completed job 19167 successfully
07:40:42 ✨  incoming request POST xxx /details/pro
07:45:03 ⚠️  Reply already sent
07:45:03 ✨ request completed 

این نمونه درخواست به سرور در زمانی که صف کار رو انجام داده.50ms زمان میبره

07:48:52 ✨ incoming request POST xxx /details/pro
07:48:52 ⚠️  Reply already sent
07:48:52 ✨ request completed 50ms

متین طیبی نیا
تخصص : backend
@MatinTayebi 2 سال پیش آپدیت شد
0

سلام
@majid4073
اول از همه وقتی جوابی چیزی میدید حتما تگ کنید این سیستم جدید نوتیفکیشن راکت تا زمانی که تگ نکنید چیزی ارسال نمیکنه .

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام