راکت
حل شده

استفاده از queue برای sms verification

3 پاسخ

من برای صفحه ورود یک سایت فقط از شماره موبایل استفاده میکنم و کد تایید پیامکی میگیرم برای احراز هویت و لاگین
برای ارسال پیامک از صف لاراول استفاده میکنم و به خوبی کار میکنه
در اینده یه ایونتی قراره در سایت برگزار بشه که در بازه زمانی یک ساعته نزدیک 10 هزار نفر قراره وارد سایت بشن
میخواستم بدونم استفاده از صف برای اینکار منطقی و اصولی هست؟ ممکنه ارسال دریافت پیامک توسط یوزر خیلی طول بکشه؟
لازم به ذکره که از درایور redis استفاده میکنم و در horizon ارسال پیامک رو اولویت high تعریف کردم و max proccecor رو 70 تا گذاشتم سخت افزار سرورم هم قدرتمنده و 96 گیگ رم داره

ثبت پرسش جدید

پاسخ‌ها

3
Amirreza Jafari
Amirreza Jafari
@ajaura

تخصص: معمار راهکارهای یکپارچه وب

بهترین پاسخ

سلام

در مورد سوالت، استفاده از صف براي ارسال پيامك توي لاگين با كد تاييد، كاملا منطقي، اصولي و حتي توصيه شده هست؛ مخصوصا وقتي انتظار داري ترافيك زيادي مثل 10 هزار يوزر در يك ساعت وارد سايت بشن.

اما براي اينكه اين فرآيند واقعا سريع و بدون مشكل انجام بشه، چند نكته مهم هست كه بايد در نظر بگيري:

  1. خود صف مشكلي نداره، ولي...
    بيشتر از اينكه صف و Redis و Horizon باعث مشكل بشن، گلوگاه اصلي معمولا:

سرويس دهنده پيامك هست (محدوديت ارسال در دقيقه يا ثانيه)

يا زمان رسيدن پيامك به گوشي كاربر

پس مطمئن شو كه:

سرويس دهنده پيامكيت ظرفيت بالايي داره و مي تونه حجم زياد رو مديريت كنه

API ش در زمان ترافيك بالا پاسخگو باقي مي مونه

  1. استفاده درست از Horizon
    كارت خيلي خوب بوده كه:

priority رو گذاشتي high

از Redis استفاده كردي

maxProcesses رو روي 70 تنظيم كردي

فقط مطمئن شو كه:

تعداد worker هاي queue واقعا فعالن (مي توني با دستور php artisan horizon:status چك كني)

پردازشگرها توي اجراي job ها گير نمي كنن و سيستم عامل يا شبكه باعث تاخير نمي شه

  1. فاصله ارسال تا دريافت پيامك
    حتما در نظر بگير كه زمان رسيدن پيامك به كاربر به چيزهاي ديگه اي هم بستگي داره مثل:

سرعت اينترنت و آنتن دهي كاربر

صف پيامك سمت اپراتور (بعضي وقتا چند ثانيه تا چند دقيقه تاخير دارن)

فشار ترافيكي در زمان خاص (مثلا شروع ايوِنت)

مي توني يه دكمه "ارسال مجدد كد" بگذاري كه اگه مثلا بعد از 30 ثانيه كدي نرسيد، كاربر بتونه خودش درخواست بده

  1. مقياس پذيري Redis و Horizon
    با 96 گيگ رم و سخت افزار قوي، اگه Redis روي يه سرور خوب تنظيم شده باشه، مشكل خاصي نداري
    فقط مراقب باش كه Redis و worker ها زير بار زياد مصرف منابع بالايي نداشته باشن و تو تنظيمات Horizon حواست به memory usage و timeout ها باشه

در كل، روشي كه داري استفاده مي كني كاملا حرفه اي و قابل اطمينانه، فقط بايد مطمئن شي كه سرويس پيامكيت تو ترافيك بالا اذيتت نكنه
موفق باشي، اگه دوست داشتي بيشتر هم مي تونيم در مورد بهينه كردن كل فرآيند صحبت كنيم

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

سلام وقتت بخیر

برای این مورد نیاز نیست چون کاربرها می‌خوان درجا لاگین کنند و نباید زیاد منتظر بمونند و این فرایند اونقدر طولانی نیست که بخواید از queue براش استفاده کنید!

علی صادقی
علی صادقی
@ali3adeghi

@AmirBizy
ممنون از توضیحات کاملت
به علت اینکه احتمال دادم سرویس پیامکی خودش صف بندی داشته باشه واسه همین موقتا برای کد تایید لاگین کنار گذاشتمش
ولی worker هم فک کنم یکم زیاد گذاشتم و رم زیادی رو اشغال میکنه
فعلا که سایت اتک خورد کلا همه چیز بهم خورد :)) ولی بازم ممنونم ازت

شاید پاسخ شما همین‌جا باشد

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

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