PDA

View Full Version : یک سایت بزرگ چگونه پیاده سازی شود



m_basij
چهارشنبه 05 بهمن 1390, 13:26 عصر
سلام.
یک سایت داریم می نویسیم که خیلی ترافیک شبکه زیاده. و پایگاه داده زیادی داری مثلا فرض کنید یک ملیون کاربر قراره تو یک پایگاه داده یک ترابایتی سرچ کنن. مطلب ببینند اضافه کنند. در کنارش انتقال فایل انجام بدن. خوب این واقعا عملیات سنگینیه. یک گیگ دیتابسیسم خیلیه. البته این حجمی رو که گفتم تقریبیه که برای سایت پیش بینی کردیم. و اوایلش خیلی کمه. خوب برای اینکار مجبوریم از چندین سرور اختصاصی استفاده کنیم ولی بازم خیلی سنگینه چون اگه مثلا 10 تا سرورم بشه بازم امکان کم اوردنش هست هم اینکه هزینه سرسام اوری رو متوجه شرکت میکنه.
خوب بگذریم اصل سوال.
به نظرتون لینوکس الان بهتر عمل میکنه یا ویندوز؟ امنیتم در نظر بگیرید.
از php یا asp استفاده کنیم یا نه از cgi استفاده کنیم. اگر بیاییم web server بنویسیم بهتر نیست؟
دلیلاتون بگید. نظر دیگه ای هم دارید بگید. در ضمن کاربرای سایت هم از طریق وب بروزر و هم از طریق نرم افزار مخصوصمون به سایت دسترسی خواهند داشت. البته یکی از دوستان می گفت بیاییم یک هاست بگیریم یک رویه html طراحی کنیم نرم افزار خاصمون رو بگذاریم انجا دانلود کنند. بعد از طریق اون به سایت دسترسی داشته باشند.
به هر حال همه نظرتون رو بدید

Net So
چهارشنبه 05 بهمن 1390, 20:59 عصر
دوست عزیز 1 گیگ دیتابیس اصلا حجم زیادی نیست. من الان رو یکی از سرور هام که VB نصبه ، DB یه 6 و خورده ای گیگی دارم و رو یه سایت دیگه هم یه DB 8.9 گیگی ( اولی فرومی با 21000 نفر و دومی فرومی با 89000 نفر عضو ) . تازه mysql و DB هایی مثل Orcacle یا PostgreSql هم نیست .
PHP میتونه خیلی خیلی بیشتر از این درخواست رو هندل کنه . الان Faceb00k رو ببین مقایسه کن با ایده ی خودت از لحاظ وسعت .
شما نیاز به 10 سرور نداری. 1 سرور هم کفایت میکنه ومنابع هم اضافه میاری ، به شرطی که Config درست داشته باشی.
اگر هم اصرار داشته باشی که از چند سرور استفاده کنی Server Load Balancing جواب گوی نیاز شما هست.

من لینوکس رو پیشنهاد میکنم چون اگر حرفه باشی ، میتونی خیلی خیلی بهتر از ویندوز Config ش کنی.
PHP رو هم پیشنهاد میکنم.
---
در مورد ، تجربه و نظر هم ، چند وقت پیش من و دوستم اولین WebGIS ایران رو نوشتیم و ثبت کردیم که اگر آشنا باشید ، حجم و وسعت کاری خیلی خیلی بالاتری رو نسبت به توضیحات شما داره .1 نمونه اینکه فرضا سمت سرور یک عکس Sat از یه نقطه با حجم 12 گیگ Load میشه و Slice میشه و روش یکسری تغییرات ایجاد میشه و نهایتا هم Optimize میشه و کاربر با Browser اون قسمت رو میبینه . ولی با یه کانفیگ درست سرور و یه مدیریت منابع درست ، به راحتی هندل شد

m_basij
چهارشنبه 05 بهمن 1390, 22:36 عصر
ممنون بقیه دوستانم نظرشون رو بدن. من ته بندی می کنم اخر دست.
اقا من یک سوال پیش امد دیتابیس شما چیه؟ من با my sql تا یک ملیونم خوب جواب داده. ولی یک موضوعی که هست یک سایتی مثل فیس بوک فکر نکنم از مای اسکیو ال استفاده کرده باشه. یکی از دوستان می گفتم دیتابیس رو توضیعش کنیم. نظرتونم در این باره بدید. راستی یک کاری میشه کرد که دیتابیس رو یک سرور جدا نگه داریم که به نظر میرسه در اون صورت امنیتش میاد پایین بین راه اطلاعات دزدیده میشیه.
اقا ما بدترین حالتی که ممکنه پیش بیاد رو در نظر می گیریم که حجم کاری سایت از فیس بوک بیشتر باشه. شما گفتید کانفیگ درستش کنی . اخه چجوری می خواهی کانفیگ کنی دیتابیس رو که بد باشه؟ این که دیتابیس گوگل چجوری هست ذهنم رو مشغول کرده. یک نظری هم در این باره بدید.

aminghaderi
چهارشنبه 05 بهمن 1390, 23:46 عصر
به نظر من :
سیستم عامل لینوکس.
زبان :
جاوا یا پایتون.
تکنیک :
اجکس.
ساختار سیستمی :
سیستم بر مبنای سیستم های توزیع شده ، و برنامه نویسی لایه ای .
دیتابیس ، اراکل.
------------------------------------------------------------------------------
مای اسکیوال تا قبل یک گیگ اطلاعات رایگان هست و برای حجم بالاتر باید لایسنس بخرید ، وقتی قراره چیزی خردیده شود ، بهرته خوبش خریده شود.
بابت راهنمایی شما در باره مشکل iis هم مجدد تشکر می کنم.

Net So
پنج شنبه 06 بهمن 1390, 13:19 عصر
اقا من یک سوال پیش امد دیتابیس شما چیه؟ من با my sql تا یک ملیونم خوب جواب داده. ولی یک موضوعی که هست یک سایتی مثل فیس بوک فکر نکنم از مای اسکیو ال استفاده کرده باشه. یکی از دوستان می گفتم دیتابیس رو توضیعش کنیم. نظرتونم در این باره بدید. راستی یک کاری میشه کرد که دیتابیس رو یک سرور جدا نگه داریم که به نظر میرسه در اون صورت امنیتش میاد پایین بین راه اطلاعات دزدیده میشیه.
اقا ما بدترین حالتی که ممکنه پیش بیاد رو در نظر می گیریم که حجم کاری سایت از فیس بوک بیشتر باشه. شما گفتید کانفیگ درستش کنی . اخه چجوری می خواهی کانفیگ کنی دیتابیس رو که بد باشه؟ این که دیتابیس گوگل چجوری هست ذهنم رو مشغول کرده. یک نظری هم در این باره بدید.
mysql
vb از mysql به صورت پیشفرض استفاده میکنه.
فیسبوک طبق گفته های خودش در بخش Developer از Mysql و Oracle استفاده میکنه ولی خوب مطمئن باشید Mysql به خوبی جواب میده. distributed processing در مورد دیتابیس امکان پذیر هست ولی توجیه پذیر نیست. به عبارت دیگه ترافیک زیاد سایت ممکنه توی عملکرد PHP تاثیر بزاره ولی تو عملکرد DB خیر. من خودم برای یه پروژه از MySQL Load Balancer استفاده کردم ولی 2 ماه بعد با وجود افزایش حجم و وسعت کار ، برگشتم به Single DB و با یه Optimize خوب ، بدون هزینه ی اضافی نتیجه ی مطلوب رو گرفتم.

در مورد اینکه DB بره رو یه سرور دیگه بله امکان پذیر هست ولی خوب باید DataCenter تون هم مطمئن باشه ، چنانچه با DownTime تو سرور DB Storage مواجه بشید ، سرور فایل ها هم بی استفاده میمونه.
حجم کاری شما محال هست که از فیسبوک بیشتر باشه. من سر اعتبار و سابقه و بقیه موارد زندگیم با شما شرط میبندم :D
کانفیگ دیتابیس یعنی Optimize جدول ها ، ایندکس بندی ، استفاده از Cach Query و ... یکی 2 مورد نیست . Data mining یکی از مشاغل نسبتا سطح بالا هست که کارش تو این حوزه هم قرار میگیره. در هر صورت پروژه ای نیست که شما روی کاغذ یه به تنهایی اجراش کنید . زیر ساخت میخواد ( البته اگر وسعت کار اون چیزی باشه که شما بیان کردید چون در اغلب موارد که به شخصه برخورد کردم ، افراد توقع یه حجم عظیم زیرسازی و سخت افزاری دارند ولی خوب اینطرف ما با یه مدیریت درست منابع و Resource ها ، با حداقل امکانات بهترین بهره وری رو حاصل میکنیم. نه من بلکه اساس IT همینه . پیدا کردن Solution مناسب با کم کردن هزینه های R&D .
دیتا بیس گوگل هم بی خیال بشید بهتره چون ابدا قابل مقایسه نیست با یه سایت ساده .


زبان :
جاوا یا پایتون.
تکنیک :
اجکس.
ساختار سیستمی :
سیستم بر مبنای سیستم های توزیع شده ، و برنامه نویسی لایه ای .
هم جاوا و هم پایتون خیلی فیچر های لازم رو ندارن .
در مورد تکنیک هم که Ajax یه روش پایه ای نیست ! یه مکمل هست . خیلی جاها حتی میگن زبان Ajax ولی این پیشنهاد شما کاملا غلط هست . Ajax یعنی استفاده ی بیشتر از منابع سرور . باید و نباید داره استفاده از اون و باید امکان سنجی ها به عمل بیاد بعد در موردش صحبت بشه
ساخار سیستمی هم که خوب مسلما باید OOP باشه ولی وقتی صحبت از برنامه نویسی چند لایه میشه ، خواهشا نگید مدل MVC . باید با الگو های طراحی و designing patterns و ... آشنا بود.

شما باید نسبت به پروژه های بزرگ ، ( نه ساخت cms و فروشگاه ساز و ... که 6 صفحه هم وقت بزاریم ببینیم Sqli نداشته باشه lol ) یه دید مایکرو به کلیت پروژه و تکنولوژی های مورد استفاده داشته باشید و یه دید میکرو نسبت به ساختار جزء ها و ...
البته باز هم میگم ، اگر واقعا پروژه به حدی باشه که شما بیان کردید.

m_basij
پنج شنبه 06 بهمن 1390, 15:44 عصر
حرف شما کاملا درسته. کانفیگ درست دیتابیس خیلی خیلی موثره. حتی مثلا اینکه بیاییم وب سرورم از بیس بنویسیم که مقادیر پر مصرف رو دیگه نریم از دیتا بیس بخونیم یا هزار کار دیگه هم موثره. من یک چیزی میگم. من تو 600,000 رکورد یک سرچی زدم myql حدود 8 ثانیه جواب داده. این در صورتیه که الان فقط یک درخواست ارسال شده. و سیستم cpu core i2 2500 و ram 4 gig بوده. خوب اگه قرار باشه 100 تا درخواست داده بشه به حتم چیزی حدود نصفشون ریکوئست اوت میشن چون هر درخواست بیش از 1 دقیقه منتظر جواب از وب سرور نمی مونه. با یکی دیگه از دوستان مشورت می کردم مای اسکیوال کلستر رو پیشنهاد کردن.
مشکل اصلا وصل کردن چند تا سرور به هم و اینا نیست. چون اگر در زمینه غیر دیتابیس مشکل پیش نیاد بقیش چیزی نیست. یک موضوع دیگه الان wamp باسه سرور از نظر امنیت چطوره. اخه میبینم اکثر ایرانیا ومپ نصب می کنن.
به نظرم میاد اینجا بجای oop مدل اسپاگتی بهتر جواب بده. این حرفتونم متوجه نشدم

شما باید نسبت به پروژه های بزرگ ، ( نه ساخت cms و فروشگاه ساز و ... که 6 صفحه هم وقت بزاریم ببینیم Sqli نداشته باشه lol ) یه دید مایکرو به کلیت پروژه و تکنولوژی های مورد استفاده داشته باشید و یه دید میکرو نسبت به ساختار جزء ها و ...
بچه ها نسخه غیر قانونی اصلی مای اسکیو ال هست رو اینترنت شما دید؟ من ندیدم. روی سرور نصب کنی متوجه میشن؟

Net So
پنج شنبه 06 بهمن 1390, 18:09 عصر
حرف شما کاملا درسته. کانفیگ درست دیتابیس خیلی خیلی موثره. حتی مثلا اینکه بیاییم وب سرورم از بیس بنویسیم که مقادیر پر مصرف رو دیگه نریم از دیتا بیس بخونیم یا هزار کار دیگه هم موثره. من یک چیزی میگم. من تو 600,000 رکورد یک سرچی زدم myql حدود 8 ثانیه جواب داده. این در صورتیه که الان فقط یک درخواست ارسال شده. و سیستم cpu core i2 2500 و ram 4 gig بوده. خوب اگه قرار باشه 100 تا درخواست داده بشه به حتم چیزی حدود نصفشون ریکوئست اوت میشن چون هر درخواست بیش از 1 دقیقه منتظر جواب از وب سرور نمی مونه. با یکی دیگه از دوستان مشورت می کردم مای اسکیوال کلستر رو پیشنهاد کردن.
مشکل اصلا وصل کردن چند تا سرور به هم و اینا نیست. چون اگر در زمینه غیر دیتابیس مشکل پیش نیاد بقیش چیزی نیست. یک موضوع دیگه الان wamp باسه سرور از نظر امنیت چطوره. اخه میبینم اکثر ایرانیا ومپ نصب می کنن.
به نظرم میاد اینجا بجای oop مدل اسپاگتی بهتر جواب بده. این حرفتونم متوجه نشدم
شما باید نسبت به پروژه های بزرگ ، ( نه ساخت cms و فروشگاه ساز و ... که 6 صفحه هم وقت بزاریم ببینیم Sqli نداشته باشه lol ) یه دید مایکرو به کلیت پروژه و تکنولوژی های مورد استفاده داشته باشید و یه دید میکرو نسبت به ساختار جزء ها و ...


بچه ها نسخه غیر قانونی اصلی مای اسکیو ال هست رو اینترنت شما دید؟ من ندیدم. روی سرور نصب کنی متوجه میشن؟ نه نوشتن وب سرور ابدا کار راحتی نیست و ابدا توجیه منطقی نداره.
شما این Search رو تو DataBase ای با چه نوع ساختاری انجام دادید ؟ از چه Engine ای استفاده شده ؟ Indexing به خوبی رعایت شده ؟ اصلا خود Query شما به چه صورت هست ؟ خود Query شما در بهینه ترین حالت هست ؟ بعد اینکه شما Cpu4 هسته ای خودتون رو با فرضا یه QuadCore Xenon 4X که میشه 16 هسته مقایسه نکنید :D اگه اینجا 8 ثانیه طول کشیده ، اگر دیتا بیس و کوئری شما اصلاح بشه قطعا زیر 5 ثانیه طول خواهد کشید. اگر Process های ویندوز رو تو لحظه محاسبه کم تر کنید به یقین زیر 4 ثانیه تو PC شما طول میکشه و همین بره روی سرور ، مطمئننا زیر 0.5 ثانیه !
کلسترینگ هم یک سولوشن هست ولی اگه شما واقعا بخواین از پردازش توزیعی استفاده کنید همون Mysql Load Balance به خوبی جواب میده.
Wamp رو روی سرور لینوکس اجرا کنید ؟

نه برنامه نویسی شی گرا رو من پیشنهاد کردم نه تکنیک نوشتن رو .

m_basij
شنبه 08 بهمن 1390, 21:53 عصر
بله ومپ روی لینوکس.
Mysql Load Balance قضیش چجوریه چجوری عمل میکنه. فرقش با کلسترینگ چیه؟

alonemm
دوشنبه 10 بهمن 1390, 16:19 عصر
یک نکته استفاده از سرور اختصاصی برای کارهای با حجم ترافیکی بالا میباشد.