نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: بررسی نرم‏افزارهای پشت بزرگترین سایت دنیا، Facebook

  1. #1
    معاونت سایت
    تاریخ عضویت
    2012/06/05
    محل سکونت
    Tabriz
    نوشته ها
    14,398
    سپاس ها
    6,794
    سپاس شده 16,762 در 8,741 پست
    نوشته های وبلاگ
    27

    Eh بررسی نرم‏افزارهای پشت بزرگترین سایت دنیا، Facebook

    بررسی نرم‏افزارهای پشت بزرگترین سایت دنیا، Facebook
    در مقیاسی که Facebook کار می‏کند، بسیاری از روش‏های سنتی ارائه محتوای وب به راحتی شکست می‏خورند و یا تا حد زیادی ناکارآمد خواهند بود. مبارزه‏ی اصلی مهندسان Facebook، برپا نگه‏داشتن و اجرای بی عیب و نقص سایت، با وجود حدود نیم میلیارد کاربر فعال می‏باشد. در زیر نگاهی خواهیم داشت بر نرم‏افزارها و تکنولوژی‏هایی که آنان برای نیل به هدفشان به‏کار می‏بندند.
    قبل از پرداختن به جزئیات، بد نیست برای درک بهتر مقیاس مبارزه‏ای که فیس‏بوک با آن روبروست، چند واقعیت را بررسی کنیم:
    • فیس‏بوک ماهانه ارائه کننده‏ی 570 میلیارد صفحه می‏باشد.
    • تعداد عکس‏های موجود در فیس‏بوک از تمام سایت‏های دیگر ارائه کننده‏ی عکس، مثل Flickr، بیشتر است.
    • ماهانه بیش از 3 میلیارد عکس در حال بارگذاری بر روی این سایت است.
    • سیستم فیس‏بوک در هر ثانیه به 2/1 میلیون عکس خدمت می‏دهد.
    • ماهانه بیش از 25 میلیارد قطعه محتوا در حال به اشتراک گذاری است.
    • فیس‏بوک بیش از 30 هزار سرور دارد. (تا سال 2009)

    نرم‏افزار‏های کمک کننده به توزیع Facebook
    از بسیاری جهات فیس‏بوک هنوز نوعی از یک سایت LAMP (Linux, Apache, MySQL, PHP) است. اما در جهت نیل به اهدافش باید عملکرد خود را تغییر و گسترش می‏داد تا بسیاری از عناصر و خدمات دیگر را متحد کند.
    برای مثال:
    • فیس‏بوک هنوز از PHP استفاده می‏کند، اما کامپایلری برای آن ساخته است که اسکریپت PHP را بر روی وب سرور خود، به کد اصلی تبدیل می‏کند و در نتیجه کارایی را سرعت می‏بخشد.
    • فیس‏بوک از Linux استفاده می‏کند، اما آن را برای اهداف خویش بهینه ساخته است. (به خصوص در توان عملیاتی شبکه)
    • فیس‏بوک از MySQL استفاده می‏کند، اما در اصل به عنوان ذخیره ساز ماندگار کلید-مقدارها، و آوردن الحاق‏ها و اعمال منطقی به وب سرورها، که در نتیجه اجرای آسان‏تر بهینه سازی را در بر خواهد داشت.

    لذا سیستم‏های سفارشی شده‏ای، مثل Haystack یا Scribe وجود خواهند داشت که در ادامه به آن‏ها خواهیم پرداخت.
    Memcached
    در حال حاظر Memcached که یک سیستم توزیع شده‏ی کش حافظه می‏باشد ، از مشهورترین قطعه نرم‏افزارهای موجود اینترنت است که فیس‏بوک (و هزاران سایت دیگر) از آن به عنوان لایه‏ی کش بین وب سرور و MySQL سرور استفاده می‏کند. در طی چند سال، فیس‏بوک هزاران بهینه‏سازی بر روی Memcached انجام داده است.
    HipHop for PHP
    از آن‏جایی که PHP یک زبان اسکریپتی است، در مقایسه با کدی اصلی که بر روی سرور اجرا می‏شود، نسبتاً کند است. HipHop مبدل PHP به C++‎ است که می‏تواند بعداً کامپایل شده و در نتیجه کارایی بهتری را ارائه دهد. تیمی 3 نفره از مهندسان فیس‏بوک، 18 ماه زمان صرف توسعه‏ی HipHop کرده‏اند.
    Haystack
    سیستم کارآمد ذخیره و بازیابی عکس فیس‏بوک، Haystack نام دارد. این سیستم هزاران کار برای انجام دادن دارد. بیش از 20 میلیارد عکس بارگذاری شده در فیس‏بوک وجود دارد که هرکدام در 4 resolution متفاوت ذخیره شده‏اند. (یعنی چند تا عکس؟!) و البته این تنها به معنی سروکار داشتن با میلیاردها عکس نیست، کارایی یک مسئله‏ی بحرانی است. همان طور که ذکر کردیم، فیس‏بوک در هر ثانیه به 2/1 میلیون عکس خدمت می‏دهد و البته این عدد، عکس‏های ارائه شده توسط CDN فیس‏بوک را شامل نمی‏شود.
    BigPipe
    سیستم سرویس‏دهی صفحه‏های وب پویا که فیس‏بوک توسعه داده است. فیس‏بوک برای بیهنه سازی کارایی، از این سیستم برای خدمت‏دهی به هر صفحه در قطعه‏هایی (که pagelets نامیده می‏شوند) استفاده می‏کند.
    برای مثال پنجره‏ی چت، تغذیه‏ی (feed) خبر و امثال این‏ها به طور جداگانه بازیابی می‏شوند. این pageletها می‏توانند به صورت موازی بازیابی شوند که باعث افزایش کارایی شده و همچنین به کاربران امکان می‏دهند که با وجود مشکل در قسمتی از صفحه، از بقیه قسمت‏ها استفاده کنند.
    Cassandra
    این سیستم، یک ذخیره‏ساز توزیع‏شده‏ی بدون نقطه‏ی شکست است. Cassandra یکی از شواهد عالی برای حرکت NoSQL است و به صورت متن باز ساخته شده است (پروژه Apache). فیس‏بوک این سیستم را برای جستجوی Inbox استفاده می‏کند.
    بجز فیس‏بوک، تعدادی از سرویس‏های دیگر، مثل Digg نیز از Cassandra استفاده می‏کنند.
    Scribe
    اسکرایب یک سیستم واقعه نگاری انعطاف‏پذیر است که فیس‏بوک آن را برای اهداف کثیری به کار می‏گیرد. این سیستم برای سروکار داشتن با log هایی در حد و اندازه‏ی فیس‏بوک ساخته شده‏است و به طور خودکار با پدید آمدن گروه‏های جدیدی از وقایع، آن‏ها را دسته‏بندی می‏کند.
    Hadoop and Hive
    این سیستم یک پیاده سازی نگاشت-کاهش (map-reduce) متن باز است که اجرای محاسبات را بر روی توده‏ی حجیمی از داده‏ها، امکان پذیر می‏کند. فیس‏بوک این سیستم را برای تحلیل داده‏ها استفاده می‏کند. Hiveاز درون فیس‏بوک سرچشمه گرفت و استفاده از پرس وجوهای SQL را در مقابل Hadoop ممکن ساخت؛ لذا کار را برای غیربرنامه‏نویسان آسان کرده است.
    هر دوی Hadoop و Hive متن باز (Apache projects) هستند و توسط تعدادی از سرویس‏های بزرگ مثل Yahoo و Twitter استفاده می‏شوند.
    Thrift
    فیس‏بوک از چندین زبان گوناگون برای خدمات مختلف خود استفاده می‏کند. PHP برای رابط کاربری، Erlang برای چت، Java و C++‎ در قسمت‏های مختلف، استفاده شده‏اند. Thrift یک میان‏افزار بین زبانی است که تمامی زبان‏های مختلف ذکر شده را به همدیگر گره می‏زند و ارتباط بین آن‏ها را ممکن می‏سازد. این امکان، توسعه‏ی بین زبانی را برای فیس‏بوک بسیار ساده کرده است.
    فیس‏بوک Thrift را متن باز ساخته است و امکان افزودن زبان‏های دیگری را نیز دارا می‏باشد.
    Varnish
    یک شتاب دهنده‏ی HTTP که می‏تواند نقش متعادل کننده‏ی بار را ایفا کند و همچنین محتویات را کش کند که بعداً می‏توانند سریع و سبک ارائه شوند.
    فیس‏بوک از Varnish برای ارائه‏ی عکس‏ها و تصاویر پروفایل و سروکله زدن با میلیاردها درخواست در روز، استفاده می‏کند. مثل اکثر چیزهایی که فیس‏بوک به کار می‏گیرد، Varnish نیز متن باز می‏باشد.

  2. 2 کاربر از پست مفید !MAHSA! سپاس کرده اند .


مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •