سلام دوستان عزیز
بنده میخوام یک سایت طراحی کنم با لاراول که مشتریم میگه میخواد روی ۱۰۰۰۰ یوزر آنلاین به مشکل نخوره و down نشه
از نظر کد نویسی توی پروژه معمولا refactor میکنم کد هام رو و اینکه تمیز کد میزنم بنابراین از این بابت مشکلی ندارم
فقط میخوام بدونم آیا لاراول و اصلا آیا php معماری خاصی داره که باهاش بشه یه همچین کاری رو هندل کرد یا اینکه اصلا با این قضیه مشکلی نداره ؟
لطفا یه راهنمایی در مورد معماری اینجور سایت ها اگر کسی میدونه به من بده ممنون میشم
احتمالا سوال خیلیا باشه
با سپاس فراوان
@alijavanmardi1996
سلام
به نظر من شما ابتدا با مشتریتون صحبت کنید و ببینید منظورش از 10 هزارتا چیه شاید بازدید در روزه .اگه تو nodejs تخصص دارید از همین اول با همون شروع کنید ولی اگه نه و php کار هستین اول مطمئن بشید مشتری چی میخاد .
برخی مشتریها اول کار هنوز شروع نکردن تو ذهنشون فکر میکنن دارن میرن بشن فیسبوک دوم ولی بعد 3 ماه انلایناشون 10 نفرم نمیرسه . قبل اینکه استارتو بزنین اول ببینید مشتری منظورش چیه و دقیقا چی میخاد .
سایت آزمون یا سایت ایرانخودرو و سایپا هست مگه ؟ که بگین ملت یهو میریزن برای خرید .
90% مشتریان اول شروع توهم دارن که میشن یکی از گنده های اینترنت ... البته همون گنده هاشم کم کم سرور و سیستم رو ارتقا دادن .
سلام دوست عزیز
1- عدد 10000 درخواست در ثانیه عدد بسیار بالایی هستش و ما که روی یه پروژه ملی کار می کنیم تهش حدود 1000 تا درخواست در ثانیه داریم. برای همین دنبال مقدار صحیح این عدد باش. هرچند که این عدد به تنهایی نمی تونه خیلی پارامتر مهم و موثری باشه. چون میانگین وزن فرایندی که ئشت هر درخواست انجام میشه هم مهمه.
2- به نظر من در صورتیکه کار وب سایت میکنی دنبال زبان نود و یا گو نرو این زبان ها شاید سریعتر باشن ولی به مراتب کار باهاشون سخت تر و پیچیده تر هستش و همچنین پیدا کردن دولوپرشون سخت تر هستش و همچنین دستمزد بالاتری دارن. این مسائل در ادامه پروژه اذیت کننده خواهند شد.
3-در مورد اینکه چجوری این تعداد درخواست در ثانیه رو جواب بدی باید بگم که نود و گو هم نمی تونن این تعداد درخواست رو جواب بدن و راهکاری که در این شرایط میاد وسط معماری سیستم هستش که معمولا با همکاری یک دو آپس طراحی و پیاده سازی میشه. برای مثال تصمیم میگیری از لاراول استفاده کنی و طبق نظر دوستان بیش تر از 400 تا درخواست در ثانیه جواب نمیده در این حالت باید با استفاده از یک لود بالانسر مثل nginx درخواست ها رو دریافت کنی با اسفتاده از داکر چندین ماشین مجازی سرویس دهنده وب داشته باشی که لود بالانسر درخواست ها رو بین این ماشین ها بالانس کنه و پشت وب سرویس چندین ماشین دیتابیس سینک شده با هم داشته باشی و درخواست ها نیز به صورت بالانس شده بین این دیتابیس ها بالانس بشه، این یه شمای ساده برای تعداد درخواست های بالا هستش. البته در همین شما باز میشه لایه های دیگه ای رو برای بهبود عملکرد اضافه کرد. همچنین راهکار بهتر از این استفاده از معماری میکرو سرویس هستش که برای درخواست هایی با لاتر از معماری قبلی کار برد داره که هزینه پیاده سازی و نگهداریش فوق العاده بالاست.
جمع بندی:
در کل پیشنهادم اینکه اگر لاراول کار هستید از همین لاراول استفاده کنید و هر وقت به مشکل برخوردید سراغ تغییر معماری سرور هاتون برید. البته استفاده از فریم ورک های سبک تر و دست ساز میتونه درخواست های بیشتری رو جواب بده ولی نهایتا اگر درخواست بالاتر بره اونها هم کاری از دستشون بر نمیاد. ببخشید که توضیحاتم خیلی کلی هستش چونکه خلیلی پارامترها در طراحی یک سیستم دخیل هستند.
در جواب بسیاری از دوستان که یک مثله مهم رو در نظر نگرفتن .....و اون وب سرور هست قطعا شک نکن روی apache سایت میاد پایین چون دارای c10k problem هست و چاره ای جز nginx نداری و دوست عزیز زیاد به زبان توجه نکن الان با تکنیک هایی که وجود دارد مثله لود بالانسینگ می تونی درخواست های بالایی رو پاسخ بدی لینک مقاله هم برات ارسال کردم مطالعه کن
https://en.wikipedia.org/wiki/C10k\_problem
شما نباید روی زبان قفل کنید که کدوم بهتره. مطمئنا تفاوتهایی در پردازش دارن ولی نه زیاد. مهمترین مسئله بهینه بودن کوئری های دیتابیس و منابع کافی سرور هست. بحث ایندکس گذاری های صحیح در دیتابیس به شدت میتونه توی بهینه بودن کوئری ها کمک کنه. همچنین به تجربه خودم دیدم که در درخواست هایی که قرار هست تعداد داده بیشتری از دیتابیس بیاد eloquent در لاراول جوابگو نیست و به استفاده از کلاس DB برای این نوع داده ها رو آوردم. مثلا ما یه سیستم ردیابی آنلاین برای یکی از شرکت های تولید کننده دستگاه های GPS نوشتیم که بالای یک میلیارد رکورد داشتن و باید دیتاهای یه ردیاب رو در یه بازه زمانی مشخصی دریافت میکردیم و فاصله طی شده رو بر اساس الگوریتم خاصی محاسبه می کردیم. منابع سروری زیادی هم نداره ولی به شدت سرعت محاسبه مهم بود و در زیر 2 ثانیه خروجی مورد نیاز رو میده. یعنی فرض کنید از بین 1 میلیارد رکورد باید داده های مربوط به یک ماه رو برای یه ردیاب که بالای چند صدهزار تا بود درمیاورد و توسط php فاصله نقاط رو محاسبه می کرد. یعنی برای انجام یه کاری باید تمام پیشنیازها بهینه باشه و فقط نمیشه روی یه پارامتر فوکوس کرد.
@amin.webdesign
سلام
بله ایندکس گذاری دیتابیس و منابع سرور خیلی مهمه
ولی خود زبان هم مهمه .. حتی فریمورک هم مهمه .. مثلا روی یک سرور مساوی و دیتابیس مساوی ، لومن یا فالکون درخواست های بیشتری نسبت به لاراول پشتیبانی میکنن
یا مثلا گولنگ و نودجی اس که خیلی سریعتر از php هستن
سلام دوست عزیز این مطلب 4 سال پیش هست لطفا تجربیات خودتون رو از لاراول برامون بنویسید ببینیم چقدر کاربران انلاین و بازدهی لاراول در پروژه های بزرگ چقدره ممنون حتما تو این 4 سال نتایج کافی گرفتید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟