همانطور که در شکل ۲-۳ مشاهده می کنید انواع مختلفی از وب سرورها موجود است که در شکل با جزییات کامل درمورد توسعه دهنده، لایسنس، آخرین نسخه و آخرین زمان انتشار نوشته شده است. شکل ۲-۴ به مقایسه ی قابلیت های همه ی سرورهای نام برده شده می پردازد و شکل ۲-۵ نیز درمورد سیستم عامل های پشتیبانی شده توسط این وب سرورها توضیح می دهد. آپاچی اچ تی تی پی سرور و انجین ایکس دو نمونه از مهم ترین سرورهای تحت لینوکس هستند که در این بخش شرح مفصلی از هرکدام را می بینید.
شکل ۲-۳ معرفی همه ی وب سرورهای موجود
شکل ۲-۴ ویژگی های وب سرورهای موجود
شکل ۲-۵ سیستم عامل های پشتیبانی شده توسط وب سرورهای موجود
۲-۲-۱ وب سرور آپاچی اچ تی تی پی سرور
این سرور وب در توسعه و همگانی شدن وب جهانی نقش بسیار مهمی داشتهاست. این سرور وب که به زبان سی[۸۰]نوشته شدهاست، از زبان های پرل[۸۱]و پی اچ پی پشتیبانی می کند و دارای قابلیت کراس- پلتفرم[۸۲] بوده و بر روی ماشینهای مختلف قابل اجرا می باشد. یک برنامه ی کد باز آزاد[۸۳]است که با سرورهای وب برای اداره کردن درخواست ها و تقاضاهای وب و منابع به کار می رود. دلیل انتخاب این اسم برای این سرور وب را نیز دو مورد ذکر کردهاند اول اینکه به یکی از قبایل قدیمی بومی آمریکا که به خاطر مقاومت و مهارت در ساخت ابزار آلات جنگی مشهور میباشند احترام گذاشته شود و ثانیاً به این دلیل که ریشه[۸۴] ی پروژه به صورت یک سری پچ[۸۵]می باشد. این سرور وب در یک گروه و به صورت کد باز گسترش یافت و از سال ۱۹۹۶ به عنوان محبوبترین سرور وب برای اچ تی تی پی در وب جهانی شناخته شده بود ولی در سال ۲۰۰۵ میدان مبارزه را به آی آی اس[۸۶]مایکروسافت باخت و در حال حاضر نزدیک به ۴۹ % بازار سرورهای وب جهان را به خود اختصاص دادهاست همچنین سیستم عامل مک[۸۷] آن را به عنوان سرور وب اصلی در پشتیبانی از اشیای وب[۸۸] خود برگزیدهاست. این سرور وب آپاچی برای میزبانی هر دو نوع وب ایستا و وب پویا مناسب است.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
آپاچی اچ تی تی پی سرور روی سیستم عامل یونیکس[۸۹] مانند لینوکس یا بی اس دی[۹۰] اجرا می شود. همچنین می تواند روی ویندوز مایکروسافت و دیگر سیستم عامل ها یا پلتفرم ها اجرا شود. یک سرور با خصوصیات منحصر به فرد با افزونه های قدرتمند که به صورت مجانی در دسترس هستند.
آپاچی دارای امکانات ویژه می باشد که متداول ترین استفاده از ویژگی های این برنامه دات اچ تی اکسس[۹۱] است که طراحان حرفه ای در محیط لینوکس از آن بهره می گیرند. برای نمونه زمانی که بخواهند اولین صفحه در سایت به خصوصی باشد با یک دستور در آن پرونده این امر ممکن می گردد و یا زمانی که صاحب سایت مایل نیست که فایل های موجود در سرور وی توسط دیگران دزدیده شود و بخواهد که مانع از پیوند مستقیم آن ها شود آپاچی کمک می کند تا به خواستشان برسند. زمانی که برنامه نویس بخواهد که محل واقعی صفحات دیده نشود نیز این برنامه مورد استفاده قرار می گیرد]۱۷ [.
۲-۲-۲ وب سرور انجین ایکس
انجین ایکس یک سرور متن باز پراکسی معکوس برای پروتکل های اچ تی تی پی، اچ تی تی پی اس، اس ام تی پی[۹۲]، پاپ۳[۹۳] و آی مپ[۹۴] است که به خوبی به عنوان متعادل کننده ی بارگذاری، کش اچ تی تی پی و یک وب سرور عمل می کند. پروژه ی انجین ایکس با هدف افزایش کارایی، همزمانی بالا و مصرف حافظه ی کم شروع به کار کرد.
بزرگ ترین مشکل وب سرور معروف آپاچی محدودیت کانکشن همزمان ۱۰۰۰۰ تایی و همچنین میزان مصرف بالای حافظه است. و این مشکل باعث شده است که با آمدن انجین ایکس محبوبیت آپاچی کاهش پیدا کند. این وب سرور رایگان است، حجم پایین و کارایی بسیار بالایی دارد و تحت لیسانس بی اس دی منتشر می شود. یکی از بزرگ ترین مزیت های این وب سرور، پشتیبانی بسیار عالی از فایل های استاتیک است.
انجین ایکس سرعت پاسخگویی بسیار بالایی دارد و در بازدیدهای بسیار بالا واقعا عالی عمل می کند. ازجمله قابلیت های انجین ایکس سازگاری این وب سرور با اکثر توزیع های لینوکس هست. زمانی که بخواهید نسخه ی انجین ایکس را ارتقا بدهید، به صورت در پرواز[۹۵] این کار را انجام می دهد و این درمورد پروژه هایی که سایت نباید زمان توقف[۹۶]داشته باشد خیلی اهمیت دارد.
انجین ایکس برای مدیریت درخواست ها یا همان کانکشن[۹۷] ها از روش منحصر به خودش استفاده می کند. در این سرور برای هر درخواست یک نخ[۹۸]جدید درست می شود و این در حالی است که سیستمی که حتی مخزن نخ[۹۹] دارد هم نخ را تا زمانی حفظ می کند که در آن لحظه درخواست جدید بیاید و انجین ایکس از نخ های بیکار استفاده می کند. این روش استفاده از نخ ها در انجین ایکس بسیار کارآمد است. به طور کلی مدیریت باز و بسته شدن نخ ها در وب سرور هایی مثل آپاچی باعث شده که این وب سرور در کانکشن های بالا، در هندل کردن این بازدیدها به قول معروف کم بیاورد.
انجین ایکس علاوه بر این که یک وب سرور است، به درخواست های پروکسی معکوس و ایمیل پروکسی[۱۰۰] (آی مپ/پاپ۳) ها هم پاسخ می دهد]۱۸ [.
۲-۳ شتاب دهنده ای به نام وارنیش
وارنیش یک شتاب دهنده ی اچ تی تی پی است که برای وب سایت های داینامیک با محتوای سنگین طراحی شده است. برخلاف تسریع دهنده های وب دیگر نظیر اسکویید[۱۰۱] که به عنوان کش سمت کلاینت عمل می کند، یا آپاچی و انجین ایکس که سرورهای مقدماتی هستند، وارنیش به عنوان یک شتاب دهنده ی اچ تی تی پی طراحی شده است. برخلاف دیگر سرورهای پروکسی که اغلب اف تی پی[۱۰۲]، اس ام تی پی و دیگر پروتکل های شبکه را پشتیبانی می کنند، وارنیش به صورت اختصاصی روی اچ تی تی پی متمرکز شده است.
وارنیش توسط تعداد زیادی از وب سایت های پر ترافیک و پر پروفایل که شامل سایت های خبرگذاری نظیر نیویورک تایمز[۱۰۳]، بی بی سی[۱۰۴]، گاواردین[۱۰۵] و سایت های محتوایی و اجتماعی نظیر ویکی پدیا، فیس بوک، توییتر[۱۰۶]و غیره استفاده می شود.
۲-۳-۱ تاریخچه
پروژه توسط شعبه ی آنلاین یک روزنامه ی نروژی به نام وردنس گنگ[۱۰۷] راه اندازی شد. توسعه دهنده ی معماری و رهبر پروژه، مشاور مستقل دانمارکی به نام پل هنینگ کمپ[۱۰۸] ( توسعه دهنده ی هسته ی بی اس دی آزاد) بود و مدیریت و توسعه ی فرا ساختاری آن توسط یک کمپانی نروژی لینوکسی به نام لینپرو[۱۰۹]انجام شد. مدیریت، پشتیبانی و توسعه ی وارنیش بعدها به صورت یک کمپانی جداگانه به نام نرم افزار وارنیش تغییر شکل داد.
وارنیش متن باز است و تحت لیسانس بی اس دی در دسترس می باشد. پشتیبانی تجاری توسط نرم افزار وارنیش انجام می شود. اولین نسخه ی وارنیش در سال ۲۰۰۶، وارنیش ۲٫۰ در سال ۲۰۰۸، وارنیش ۳٫۰ در سال ۲۰۱۱ و وارنیش ۴٫۰ در سال ۲۰۱۴ وارد بازار شد.
۲-۳-۲ معماری
وارنیش داده را در حافظه ی مجازی ذخیره می کند و سیستم عامل را از عمل تصمیم گیری درمورد این که چه چیزی در حافظه وجود دارد و چه صفحه ای باید از دیسک خارج شود، رها می کند. فایده ی این کار است که از به وجود آمدن موقعیت هایی که سیستم عامل عمل کش کردن داده را شروع می کند درحالیکه آن داده توسط برنامه به دیسک انتقال پیدا کرده است، اجتناب می کند.
به علاوه وارنیش به شدت به نخ کشیده است، با هر ارتباط کلاینت به وسیله ی یک نخ جداگانه اداره می شود. هنگامی که حد مشخصی روی تعدادی از نخ های فعال در دسترس است، ارتباطات ورودی در صف سرریز قرار می گیرند. وقتی این صف به ارتباطات ورودی محدوده ی مشخص خودش دسترسی داشته باشد، رد خواهد کرد.
مکانیزم پیکربندی اصلی زبان پیکربندی وارنیش[۱۱۰] است، یک زبان مشخصه دامنه[۱۱۱]که برای نوشتن تله[۱۱۲] هایی استفاده می شود که در نقاط بحرانی سازماندهی هر درخواست صدا زده می شوند. اغلب تصمیمات سیاسی که به کد وی سی ال واگذار می شوند، وارنیش را نسبت به شتاب دهنده های دیگر اچ تی تی پی منعطف تر و سازگارتر می سازد. وقتی یک اسکریپت[۱۱۳]وی سی ال بارگذاری می شود، به زبان سی ترجمه می شود، به یک شی مشترک توسط سیستم کامپایلر کامپایل می شود و سپس به صورت مستقیم به شتاب دهنده ای بارگذاری شود که می تواند بدون راه اندازی دوباره، دوباره پیکربندی شود.
تعدادی از پارامترهای زمان اجرا، کنترل کردن چیزهایی نظیر ماکسیمم و مینیمم تعداد نخ های کارکننده[۱۱۴]، تایم اوت[۱۱۵] های جدی و غیره است. یک واسط مدیریت خط فرمان[۱۱۶]ها به این پارامترها اجازه می دهد که تعدیل شوند، و اسکریپت وی سی ال های جدید کامپایل شوند، بارگذاری شوند و فعال شوند، بدون راه اندازی دوباره ی شتاب دهنده.
به منظور کاهش تعداد سیستم کال[۱۱۷]ها در مسیر سریع به یک مینیمم، داده ی لاگ در حافظه ی مشترک ذخیره می شود، و عمل بازبینی، فیلتر کردن، فرمت کردن و نوشتن داده ی لاگ به دیسک به برنامه ی جدا نمایندگی می دهد]۳۱ [.
۲-۳-۳ کارایی
درحالیکه وارنیش طراحی شد تا رقابت بین نخ ها به مینیمم کاهش یابد، ادعای نویسنده این است که کارایی آن به خوبی به کارگیری نخ پی[۱۱۸]های سیستم است.
به علاوه، یک پیاده سازی ضعیف ممکن است یک رقابت غیرضروری اضافه کند که به موجب آن کارایی محدود شود. بنابراین پیشنهاد عمومی اجرای وارنیش روی محیط های برپایه ی لینوکس یا یونیکس است]۱۹ [.
۲-۳-۴ شما این کار را اشتباه انجام می دهید
فکر می کنید که در هنر کارآمدی سرور ماهر شوید؟باز هم فکر کنید.
شما باور می کنید اگر من ادعا کنم الگوریتمی که به مدت ۴۶ سال به عنوان الگوریتم بهینه در کتاب ها بوده است و با جزییات فراوان توسط فرد نابغه ای مثل نوت[۱۱۹] آنالیز شده باشد و در تمام رشته های علوم کامپیوتر جهان تدریس شده باشد، می تواند به مقدار ۱۰ بار سریع تر بهینه شود؟
حدود دو سال پیش من ارتباطم رو با بعضی از شرکت های خوب قطع کردم و شروع کردم به نوشتن درمورد یک تسریع دهنده اچ تی تی پی متن باز به نام وارنیش، که به صورت مقدماتی یک کش اچ تی تی پی است که جلوی وب سرورهای کند قرار می دهند. امروزه وارنیش توسط هر نوع وب سایتی اعم از فیس بوک، ویکیا[۱۲۰]و اسلش دات[۱۲۱] سایت مبهمی که مطمئنا تا به حال اسمش را نشنیده اید، استفاده می شود.
حدود ۱۵ سال از سرپرستی کرنل بی اس دی آزاد می گذرد و اکنون من به کاربر ساده ای می مانم که دانش اندکی در مورد اتفاقات پشت سیستم کال ها دارد. یکی از مهم ترین دلایلم برای پذیرفتن پروپوزال وارنیش این بود که نشان دهم چگونه می توان یک الگوریتم سرور با کارایی بالا نوشت.
زیرا، به بیان کاملا واضح، اکثریت شما این کار را غلط انجام می دهید. نه تنها غلط به معنای ناقص بلکه به معنای اتلاف نیمی از کارایی یا حتی بیشتر.
اولین کاربر وارنیش یک روزنامه ی بزرگ نروژی به نام وی جی[۱۲۲] بود ۱۲ ماشین درحال اجرای اسکویید خود را با ۳ ماشین درحال اجرای وارنیش جایگزین کرد. ماشین های اسکویید صد در صد اشغال بودند، در حالیکه ماشین های وارنیش ۹۰ درصد سی پی یوی آزاد برای تکان دادن دکمه های رقمی خود داشتند.
یک نسخه ی کوتاه از این داستان این است که وارنیش می داند که روی یک فلز برهنه اجرا نمی شود و تحت سیستم عاملی اجرا می شود که حافظه ی مجازی برپایه ماشین انتزاعی را فراهم می کند. برای مثال وارنیش مانع این حقیقت نمی شود که حافظه مجازی است و به صورت فعالانه از این قضیه بهره برداری می کند. ۳۰۰ گیگابایت ذخیره ی پشتیبان، حافظه روی یک ماشین با کمتر از ۱۶ گیگابایت رم[۱۲۳] نگاشت می شود که این نمونه بارزی است. کاربر برای ۶۴ بیت فضای آدرس پول پرداخت کرده است و من برای استفاده از آن نمی ترسم.
یک تکلیف ویژه در کنار وارنیش، دور انداختن اشیا از درون کش است وقتی که مدت زندگی مجازی آن ها تمام شده است. این کار برای ساختمان داده هایی انجام می شود که می توانند کوچکترین شی کلیددار را از مجموعه کلی دریافت کنند.
یک مرور سریع از کاتالوگ پرش کارت باینری هیپ[۱۲۴]، نه تنها یک کارایی معامله از مرتبه لاگ ان[۱۲۵] را بازی می کند بلکه یک بالاسری متا داده[۱۲۶] از تنها یک اشاره گر برای هر شی دارد(اگر ۱۰ میلیون + شی داشته باشید اهمیت زیادی دارد)
با بازخوانی با دقت، نوت تایید کرد که این انتخاب محسوسی بود و پیاده سازی جزیی بود.
در سفر اخیر با قطار شب به آمستردام، ذهنم سرگردان بود و به این فکر می کرد که نوت ممکن بود در مورد کارایی باینری هیپ گمراه کننده عمل کرده باشد، حتی به وسیله ی رتبه بزرگی. در مسیر خانه و همچنین درون قطار، شبیه سازی ای را نوشتم که ظن صحیح من را اثبات می کند.
قبل از اینکه نظریه پردازان سی اس[۱۲۷] قهوه شان در گلوشان بماند: نهراسید!
موقعیت پی[۱۲۸] به ان پی[۱۲۹] تغییر پیدا می کند، و من یک جریان سیستماتیک را در کیفیت دلایل نوت نیافتم. یافته های سی اس همانطور که آن را می شناسیم هنوز صحیح است. آن ها تنها مقدار کمی نامرتبط تر و غیرمفیدتر از آن چیزی هستند که فکر می کنید، حداقل با توجه به کارآمدی.
قدیمی ترین منابع برای باینری هیپ که تعیین کرده ام، متن کامپیوتر است، مقاله ی جی.دبلیو.جی.ویلیامز[۱۳۰]است که در ژوئن ۱۹۶۴ با موضوع ارتباطات ای سی ام[۱۳۱]و عنوان الگوریتم هیپ سورت[۱۳۲]-۲۳۲ تالیف شده است. مشکل اینجاست که ویلیامز هم اکنون در دسترس نیست و تحلیل الگوریتمی آن نیز حتی قبل از تالیف منسوخ بود.
در مقاله ای در آوریل ۱۹۶۱ از سی ای سی ام[۱۳۳]، فادرینگام[۱۳۴] نوشته بود که چگونه کامپیوتر اطلس[۱۳۵]در دانشگاه منچستر مفهوم یک آدرس را از موقعیت حافظه جدا کرده است، چیزی که برای تمام اهداف تمرینی اختراع وی ام[۱۳۶]را نشان کرده است. این دقیقا زمانی قبل از اتفاق افتادن حافظه مجازی اتفاق افتاد، اما امروزه تمام اهداف عمومی اغلب درون کار تعبیه شده اند و بسیاری از سیستم عامل های خاص برای ارائه دادن مدل ماشین مجازی استاندارد شده از وی ام استفاده می کنند.