سلام دوستان عزیز
بنده میخوام یک سایت طراحی کنم با لاراول که مشتریم میگه میخواد روی ۱۰۰۰۰ یوزر آنلاین به مشکل نخوره و down نشه
از نظر کد نویسی توی پروژه معمولا refactor میکنم کد هام رو و اینکه تمیز کد میزنم بنابراین از این بابت مشکلی ندارم
فقط میخوام بدونم آیا لاراول و اصلا آیا php معماری خاصی داره که باهاش بشه یه همچین کاری رو هندل کرد یا اینکه اصلا با این قضیه مشکلی نداره ؟
لطفا یه راهنمایی در مورد معماری اینجور سایت ها اگر کسی میدونه به من بده ممنون میشم
احتمالا سوال خیلیا باشه
با سپاس فراوان
10 هزارتا آنلاین خیلی زیاده و بعید میدونم اینقدر کاربر داشته باشه ولی اگر هم داشته باشه لاراول جواب نمیده
برید سمت نود جی اس یا گو لنگ و ...
@alijavanmardi1996
بهترین زبان برای اینکار به نظرم Node js و یا Go هست . PHP درسته که خیلی عالیه منتهی فکر نکنم عاقلانه باشه برای این حجم داده.
سلام
@alijavanmardi1996
جواب میده دوست عزیز
لاراول میتونه خوب هندل کنه این قضیه رو در صورتی که منابع لازم از سمت سرور بهش داده بشه
برای این کار
سرور رم کمتر از 32 گیگ نگیرید
همراه با یه پردازنده قوی Intel Xeon
کلود لینوکس هم حتما نصب بشه روی سرور ، یه وب سرور خوب هم مثل لایت اسپید متناسب با تعداد هسته سرور هم نصب بشه
خیلی راحت و ایمن میتونید این قضیه رو هندل کنید
آخه اگر php جواب نمیداد چرا digikala سوییچ کرد روی php خب میرفت سراغ node.js
درسته node.js کامل ساخته شده برای request های بالا ولی میخواستم ببینم که laravel و php هم همچین قابلیتی دارن یا نه
من خودم تو این فکر بودم که برای دیتابیس از یک سرور مستقل استفاده کنم که همه ی کارها روی یک سرور اجرا نشن
نظرتون در مورد این کار چی هست؟
دیجی کالا نهایت کاربر آنلاینش 40 50 تا هست نه 10000!!!
این عدد که شما میگید خیلی بالا هست، اگه واقعا اینقدر کاربر آنلاین دارید اصلا نرید سمت لاراول و php که پشیمون میشید.
لاراول نهایتا 200 300 تا رو جواب میده
@developer
من حس میکنم مشتریم منظورش ۱۰۰۰۰ تا در روز یا ساعت بوده نه لحظه
در این صورت چی بازم جواب نمیده؟
ببینید به شرطی که منابع سرور کافی داشته باشید لاراول ثانیه ای 300 400 تا جواب میده، یعنی روزی چند میلیون ریکوئست،
پس واسه 10000 تا توی ساعت میشه ثانیه ای 3 ریکوئست که راحت جواب میده
ابتدا مقدار واقعی درخواست/ثانیه رو مشخص کنید و بعد دنبال زبانش بگردید.
روی نسخه های جدید PHP (۷ به بالا) در شرایط خوب لاراول حدودا ۵۰۰ تا ریکوئست در ثانیه رو جوابگو هست. (این مقدار برای 95٪ پروژههای ما در ایران کافیه)
NodeJS بیشتر و گزینه نهایی هم زبان Go هست
چی 10000 تا خیلی هست ! شک نکن با laravel بزنی down میشه این مقدار رو نمیتونه هندل کنه اگر هدفت با php فکر کنم با yii2 بتونی به یه جایی برسی در غیر اینصورت از node js یا go استفاده کن البته rails هم گزینه فوق العاده ای هست که بلد نیستیم :)
@developer
درود...
دیجیکالا اتفاقا زمان آنلاین کاربران بسیار بالاست...
یادم باشه روزی ۳۰۰۰۰ الی ۵۰۰۰۰ تا سفارش داره و کاربران زمان بیشتری صرف جستجو در دیجیکالا برای پیدا کردن محصول مورد علاقه خود می کند حتی گفته شده ۵۰۰۰۰۰ تا محصول در دیجی کالا ثبت شده بخواد کاربر یکی محصول در آن ۵۰۰۰۰۰ محصول پیدا کنه باید زمان بیشتری برای پیدا محصول اختصاص بده...
خب کاربر زمان بیشتری در دیجی کالا می گذرونه یعنی مدت زمان آنلاین بودن بالاست و فوق یکساعت در سایت دیجی کالا آنلاین می مونه...
خود دیجی کالا اعلام کرده وقتی هر چقدر کاربر زیاد باشه و تعداد بالا باشه باید سرور قدرتمندی برات تعریف بشه ... حتی حجم رم سرور دیجیکالا از یک ترابایت گذشته...
لاراول تعداد کاربران آنلاین نامحدود پشتیبانی می کند.
متن انگلیسی :
Laravel supports an infinite number of online users.
Your server configuration is the deciding factor in what you can support. IF you have a tiny little 1 cpu 1 core 1 gig of ram server running @ 10mbps then you number is considerably lower than a massive AWS cloud with load balancing and all that fun stuff running at 10gbps...
Its not laravel that decides these things, its the rest of your configuration.
رایموند جان منظور از کاربر آنلاین یعنی تعداد ریکوئستها در ثانیه هست نه اینکه صد میلیون نفر بیان فقط نگاه کنند سایت رو و ریکوئستی ندن!
در ضمن اگه حساب کنی دی جی کالا به طور متوسط هر ثانیه نهایتا 10 ریکوئست داره نه بیشتر
@RaymondDragon
@RaymondDragon
یعنی کاربر به سمت سرور یک درخواست بده مثلا باز کردن یک صفحه جدید، یا پست کردن سوال یا لایک کردن و ...
کلا به نظرم واسه سایت ها ( از شخصی تا فروشگاه اینترنتی به عظمت دیجیکالا ) پی اچ پی بهترین گزینه هست
ولی واسه اپلیکیشن های موبایلی که خیلی کاربر با برنامه تعامل داره و ریکوئست زیاد میده مث اینستا یا بازار یا ... node js و go مناسب تر باشن
@developer
خب ...
این درخواست گسترده تر به نظر میاد...
دیجی کالا ۵۰۰.۰۰۰۰ الی ۱.۰۰۰.۰۰۰ محصول ثبت شده داره...
کاربری بخواد بین این همه محصولات محصول مورد علاقه خودش پیدا کنه به نظرت درخواست ها بالاتر نمیره؟ یا در صفحه نوشته جدید برای محصول و لایک و غیره انجام بده...
قراره ۲۰۰ میلیون کاربر پشتیبانی کنه...
شما داری حدسی میگی من دارم طبق امار میگم طبق آمار خودشون روزانه 850 هزار بازدید میشه از سایت، نگفته بازدید یونیک، گفته کلا بازدید، پس نهایتا به طور متوسط ثانیه ای 10 ریکوئست هست
@RaymondDragon
که لاراول تا 300 400 رو جواب میده
ما برای برگزاری دوره های سازمانی با کاربر بسیار بالا از cms به نام مودل استفاده می کنیم که با زبان php نوشته شده و با اینکه
سرور هامون کانفیگ بسیار بالایی دارن ولی متاسفانه بزرگترین مشکل ما همین کاربر آنلاین هست زمان برگزاری آزمون بشدت حجم request ها بالا میره و درصدی از کاربر ها آزمونشون مختل میشه.
مشکل رو بررسی که کردیم متوجه شدیم مشکل هم مربوط به php میشه و هم به خود آپاچی .
خیلی تحقیق کردم و به این نتیجه رسیدم که بهترین گزینه برای ما همون nodejs هست
پس ریسک نکن
در ابتدا بپرس دقیقا منظورشون از 10000 کاربر آنلاین چی هست چون تنها تحت شرایط خیلی خیلی خاص با اینچنین درخواست همزمان مواجه میشویم
مثلا زمانی که شما بخواین یک آزمون آنلاین بین صد هزار نفر در 10 دقیقه برگزار کنید قطعا با این عدد مواجه خواهید شد که php بشدت شما رو سر خورده میکنه .
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟