ویر کارایی: معرفی مساله C10K

اینم یه تجربه پراکنده دیگه!

در ادامه سری «ویر کارایی» میخواستم یه پست کوتاه در مورد یه مساله بسیار مهم در حوزه کارایی بنویسم. مساله‌ای که معروف به C10K هست.

اگه بخوام بصورت خیلی تو دل برو و خودمونی این مساله رو تعریف کنم باید بگم که: نوشتن برنامه‌هایی با قابلیت کار کردن با ۱۰ هزار کانکشن همزمان بصورت موازی هست. یعنی در آن واحد ما به ۱۰ هزار مشتری پاسخ بدیم. این مساله در اواخر ده ۱۹۹۰ توسط آقای کگل معرفی شده و ادعا شده که الان سخت‌افزارهای قوی برای ارائه سوریس وجود داره و گلوگاه معمولا بخش نرم‌افزار هست. برای این مساله راه‌حل‌های مختلفی پیشنهاد شده که میتونید پست اصلی آقای کگل رو بخونید. معمولا این راه حل‌ها ترکیبی از تنظیم سیستم عامل به علاوه بهبود نرم افزار هست.

هنوز روی این مساله کار میشه و از نقطه نظر‌های مختلف بررسی میشه. و حتی اخیرا حد ۱۰ هزار کاربر رو به ۱۰ میلیون کاربر همزمان افزایش دادن و مساله جدیدی برای بررسی ارائه کردن.

اما من هنوز در ایران هیچ راه حلی رو به چشم ندیدم که این تعداد کانکشن همزمان داشته باشه. من توی سیستم بانکی کار کردم و با سیستم‌های مخابراتی آشنا هستم. معمولا تعداد کاربران همزمان سیستم‌های بانکی زیر ۴۰۰ کاربر همزمان و سیستم مخابراتی اگه اشتباه نکنم زیر ۱۰۰۰ کاربر هست. یعنی هنوز راه زیادی تا مساله C10K داره. البته باید بگم که چون سیستم‌های مخابراتی و بانکی مبتنی بر تراکنش هست، معمولا پیچیده تر از یک وب سرور هست که بخواد ۱۰ هزار کلاینت همزمان داشته باشه. هنوز هم شخصا سعادت آشنایی با سایتی رو نداشتم که این مقدار بازدید کننده داشته باشه.

امیدوارم در آینده نزدیک یه بخورد نزدیک با این مساله داشته باشم. و این یعنی که سطح سرویس‌ها اینترنتی در کشور ما به شدت افزایش یافته.

همین!

6 دیدگاه در “ویر کارایی: معرفی مساله C10K

  1. با سپاس
    قسمت دوم این مطلب برایم جالب بود. متاسفانه تا الان سراغ ندارم کسی در مورد جزییات که هیچ حتی کلیات کار یا پروژه ای که توی ایران به آن مشغول هست توضیحات مفیدی ارائه بده. مثلا تکنولوژی ها یا ابزارها یا روش ها یا … که استفاده کردند. شاید در آینده چنین افراد یا بهتر بگویم شرکت هایی پیدا شوند. شاید یک دلیلش خود گوگل پنداری ایرانی هاست که از افشای روش های فوق پیشرفته و بی نظیرشان در دنیا برای رقیب می ترسند. یا شاید هم از افشای گند کاریشان 😀
    البته تاکید کنم که این حقیر ندیده است و شاید چنین مواردی باشد!

    • ay می‌گوید:

      سلام

      خوشحالم که مطالب به دردتون خورده.

      معمولا کسی از این حرفا نمیزنه و تجربیاتشون رو به اشتراک نمیگذارن به علت اینکه فرهنگ جمعی ما مبتنی بر اشتراک نیست! اما من خودم سعی میکنم که تجربیاتم رو به اشتراک بگذارم که کم کم اول از همه ترس خودم بریزه(چون تا مرد سخن نگفته باشد عیب و هنرش نهفته باشد) و دوما بقیه هم به این نتیجه برسن که به اشتراک گذاشتن کار خوبیه.

  2. خودتون بهتر میدونید هزینه R&D هزینه زیادیه و شرکت هایی که توی این زمینه تحقیق میکنن اصولا دوست ندارن دست آوردهایی که عموما در جهان دست آوردی حساب نمیشه رو به کس دیگه ای یاد بدن
    البته در این مورد خاص تک و توک شرکت هایی دیدم که کارهایی انجام بدن و حتی توی یکیش هم کار کردم و شرکت هم از راه کارهای افراد دیگر استفاده کرده با اینحال اجازه انتشار رو به کسی نمیده

    • ay می‌گوید:

      بله هزینه تحقیق و توسعه خیلی زیاده اما تا اونجایی که من خوندم علم تنها کالایی هست که با مصرف شدن زیاد میشه. یعنی اگه دیگران از علم ما استفاده کنند در نهایت علم ما زیاد میشه.

      اونم سیاست شرکتهاست که من خیلی درکش نمی‌کنم اما با توجه به اینکه «صلاح مملکت خویش خسروان دانند» می‌پذیرمش

  3. محمد امینی می‌گوید:

    این مسئله مربوط به تعداد کانکشن های هم زمان هست که میشه به یک سیستم زد نه تعداد request های هم زمان. و طبیعتا با این تعریف این مسئله ای هست که وب سرور باید بهش رسیدگی کنه و الان وب سرور ها چنین قابلیتی رو دارن. به عنوان مثال سایتی مثل دیجی کالا رو در نظر بگیرید، در حال حاضر واقعا ممکنه ۱۰ هزار نفر صفحه ی اونو توی browser باز کرده باشن پس ۱۰۰۰۰ کانکشن بهش زده شده اما ممکنه در ثانیه فقط ۱۰۰ نفر کلیک کنن پس فقط ۱۰۰ درخواست در ثانیه رو باید پاسخ گو باشه.
    در اینجا دیجی کالا یا هر سایت و سیستم دیگه لزوما نباید به مسئله c10k رسیدگی کنه چون بسیار بعیده که تعداد کانکشن ها از توان وب سرور های موجود فراتر بره (حتی اگه از مرز ۱۰ هزار عبور کنه) بلکه دغدغه ی اصلی طراح نرم افراز باید همون تعداد request ها در ثانیه باشه.
    فکر میکنم در شرایط سوییچ شاپرک یا برخی psp ها با تعداد تراکنش های بیش از ۴۰۰ تراکنش در ثانیه مواجه باشن. (البته مطمئن نیستم)
    تازه با وبلاگتون آشنا شدم. به طور کلی مطالب خوبی دارین. 🙂

    • Abbas Yazdanpanah می‌گوید:

      اولا دست شما بابت این همه کامنت درد نکنه

      من حقیقتا به شخصه خیلی تفاوتی بین اینها قائل نیستم ولی قطعا در عمل تفاوت‌هایی وجود داره. الان با پیشرفت سیستم عامل‌ها رسیدن به اون تعداد کانکشن باز ممکنه ولی سرویس دادن بهشون سخت شده.

      اگه به این موضوع علاقه دارید سایت highscalability.com خوبه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.