شما اینجا هستید :

Home » مقالات » توسعه سمت سرور » CDN (شبکه‌ٔ توزیع محتوا) چیه و چجوری کار میکنه؟

CDN (شبکه‌ٔ توزیع محتوا) چیه و چجوری کار میکنه؟

CDN مخفف ۳ کلمه Content Delivery Network هستش و به شبکه‌ای از کامپیوترها اشاره میکنه که به منظور ارائهٔ محتوا به کاربران به سریع‌ترین شکل ممکن طراحی و ساخته شدن. CDN به تعدادی از سرورها اشاره میکنه که از لحاظ جغرافیایی مابین سرور اصلی و کاربر قرار میگیرن طوری که ریکوئست کاربرا به منظور دسترسی به محتوای مد نظرشون به جای سرور اصلی، به این سرورا ارسال میشه.

حالا هدف از انجام اینکار چیه؟ هدف اینه که تأخیر در ارسال و دریافت دیتا کاهش و سرعت ارائهٔ محتواست بره بالا. (بهن سرورهایی که به کاربرا نزدیک‌ترن  Points of Presence یا به اختصار PoP گفته میشه، که محتوای قابل ذخیره‌سازی در حافظۀ کَش را ذخیره میکنن و با اینکار عملا موجب کاهش بار کاری اسرور اصلی میشن).

انواع مختلفی از CDN وجود داره که به منظور ارائهٔ سرویس‌های مختلفی طراحی شدن، توپولوژی‌ شبکهٔ این سرورا هم می‌تونه متفاوت باشه. به عنوان مثال Scattered CDN یا شبکه‌های پراکنده رو میتونیم نام ببریم که این توپولوژی با هدف ارائۀ سرورهای PoP فراوان در نقاط مختلف دنیا طراحی شدن. ( شرکت Akamai از این توپولوژی برای سرورهای CDN خودش استفاده میکنه، این شرکت تونسته یکی از بزرگترین حملات DDoS دنیا رو بر روی وب‌سایت گیت‌هاب کنترل کنه.) یه توپولوژی دیگه هم برای سرورهای CDN تحت عنوان Consolidated CDN وجود داره که هدف از طراحی این توپولوژی به کارگرفتن سرور‌ای کمتر اما با قدرت بیشتر به منظور بهبود پرفورمنس سروره، تا هر سرور توانایی مقابله با حملات بزرگ رو داشته باشه.

انواع شبکه‌های توزیع محتوا
همونطور که گفته شد هدف اصلی CDN کاهش تأخیر و همچنین بالا بردن سرعت رندرینگ صفحات وب به منظور بهبود سرعت ارائۀ محتوا به کاربراست. شبکه‌های CDN در دو دسته کلی قرار میگیرن که در ادامه شرح میدم.

Content-Oriented CDN
در ابتدا شبکه‌های توزیع محتوا (CDN) برای دسترسی به محتواهای اِستاتیکی همچون فایل‌های CSS ،HTML و JS ساخته شده بودن؛ بدین معنی که دولوپرها پس از ایجاد یا آپلود محتوای خودشون باید اونا رو داخل این سرورا اصطلاحاً Push میکردن. به بیان دیگه، محتوای حافظۀ کَش تو چنین سرورایی حتی در صورت ارسال ریکوئست کاربرا به اونا، آپدیت نمیشن. بعده ها قابلیتی به نام Origin Pulling به سرورا افزوده شد تا فرآیندهایی مثل ارسال ریکوئست به سرور و دریافت ریسپانس از اون به صورت اتوماتیک انجام بشه به این ترتیب که ریکوئست کاربر به شبکهٔ توزیع محتوا ارسال میشه و در ادامه سرور ریکوئست مد نظر کاربر رو به صورت اتوماتیک به سرور اصلی وب‌سایت ارسال میکنه و ریسپانس دریافت شده رو در حافظۀ کَش خودش ذخیره میکنه.

ناگفته نمونه که Availability (میزان دسترسی‌پذیری) به محتوای درخواست‌شدۀ کاربرا یه فاکتور مهم تو این سرورا بحساب میاد، طوری که اکثر سرورای مدرن شبکه‌های توزیع محتوا، آخرین نسخه از وبسایت اصلیشون رو تو حافظۀ کَش خود ذخیره میکنن تا در شرایطی که سرور اصلی داون شد بتونن یه نسخه از اون رو در اختیار کاربرا قرار بدن. که اگه این  اتفاق بیفته کاربرا متوجه داون شدن سرورشون نمیشن

بجز مطالبی که گفته شد خیلی از سرورای شبکه‌های توزیع محتوای مدرن که امروزه وجود دارن باعث بهبود پرفورمنس وبسایت هم میشن. به عنوان مثال، میان اندازه تصویر وبسایت اصلی رو تغییر میدن و اونو ذخیره میکنن تابتونن بعدا تصاویر متناسب با اندازهٔ درخواست‌شده از سمت کاربرا رو در معرض دیدشون قرار بدن.

Security-Oriented CDN
ویژگی دیگه ایی که به سرورای شبکه‌های توزیع محتوا اضافه شده، افزایش مقاومت اونا در برابر رباتا و حملاتی از نوع DDoS هستش. سرور سی‌دی‌ان بیرونی‌ترین لایۀ معماری وبسایتا رو تشکیل میده و اولین کامپوننت دریافت‌کنندۀ ریکوئست کاربره به همین خاطر میتونه حملات #دیداس رو زودتر از سایر کامپوننتا تشخیص بده و با استفاده از سرورای مخصوصِ مقابله با حملات دیداس که Scrubbers نامیده میشن اونا رو بلاک کنه تا این حملات به سرور اصلی نرسه و باعث داون شدنش نشه.

مضاف بر این سرورای شبکه‌های توزیع محتوا میتونن با استفاده از اطلاعاتی که از سمت کلاینتا دریافت میکنن ریکوئستایی همچون درخواستای اِسپم و رباتا رو که آدرس‌ IPهاشون مشکوکه، شناسایی کنن. و اینکه چنین سرورایی می‌توانن انواع مختلف Crawler و رفتار اونا رو بررسی کنن و یه دسته‌بندی صحیح‌تر نسبت به ترافیک ورودی خودشون داشته باشن.

ارائه‌دهندگان سرویس شبکه‌های توزیع محتوا علاوه بر اینکه قابلیت آپلود به اصطلاح SSL Certificate کاستومایزشدۀ مشتریا رو براشون فراهم میکنن، خودشون هم یسری پیشنهاد درباره SSL Certificate ارائه میدن که این سرویس دو تا مزیت برا کاربرا داره که در ادامه اونا رو بررسی می‌کنیم:

– زمانی که SSL Certificate آسیب میبینه، ارائه‌ دهنده های سرویس سی‌دی‌ان سعی میکنن اون مشکل رو خیلی سریع حل کنن چون هر گونه آسیب پذیریی منجر به از دست رفتن تعداد زیادی از مشتریای سرویسشون میشه.

– فرآیند اتصال‌ وبسایت به سرورها سریعتر انجام میشه. ینی در صورتی که چند وبسایت به ی سی‌دی‌ان مشترک متصل میشن و یکی از وبسایت‌ها کانکشنی به اصطلاح Valid (معتبر) با این سرور و با استفاده از SSL Certificate اون سرور برقرار میکنه، سایر وبسایتا به منظور برقراری کانکشن از طریق همون SSL Certificate دیگه نیاز به تکرار اون فرآیند پیدا نمیکنن. البته این مسئله تأثیر زیادی تو سرعت برقراری کانکشن برا یه وبسایت خاص نداره اما تو مقیاس بزرگتر و برای چند بسایت فاکتور مهمی بحساب میاد.

چگونگی استفاده استفاده از CDN
استفاده از یه سرور شبکه‌ٔ توزیع محتوا نیاز به اِعمال تغییر در تنظیمات DNS Server تو کنترل پنل مربوط به دامنه ثبت‌شده اس با اینکار تمام ترافیکی که قبلاً به سمت سرور اصلی وبسایت ارسال میشد، حالا به سمت سرورای شبکه‌ٔ توزیع محتوا میره.

گاهی اوقات برخی از وبسایتا یک ساب‌دامین مخصوص رو به منظور میزبانی تصاویر، فایل‌های جاوااسکریپت، سی‌اس‌اس و سایر ریسورسا در نظر میگیرن طوری که اگه به تَب Network مربوط به ابزار Developer در مرورگر کروم و یا به ستونِ Status Bar از این ابزار در مرورگر فایرفاکس توجه کنین، میبینین که هنگام ارسال ریکوئست به منظور لود شدن سایتی مثل فیسبوک، خیلی از یوآرالا تو آدرس خودشون واژۀ «cdn» رو دارن و این دقیقاً همون ریکوئستیه که بخشی از محتوای وبسایت رو از سرور شبکه‌ٔ توزیع محتوا لود می‌کنه.

حالا چرا نباید کل محتوای مورد نیاز وبسایت رو از طریق سرورای شبکه‌ٔ توزیع محتوا دریافت کنه؟ باید توجه داشته باشیم که برخی محتواهای استاتیک وبسایت همچون فایل‌های JS ،CSS ،HTML و غیره سایز بزرگی دارن و لود سریع‌ چنین فایلایی به این خاطر ارزشمنده که غالباً محتوای فایلا تغییر نمیکنه و میتونن اونا رو را برای مدتی در حافظۀ کَش ذخیره کنن و دلیل دوم اینه که بارِ مربوط به فایلای استاتیک از روی وب‌سرور برداشته میشه و توان سرور برای هندل کردن بخش دینامیک وبسایت افزایش پیدا میکنه.اما برخی ریسورس‌ایی که دائم در حال تغییرن رو بهتره از طریق همون سرور اصلی وبسایتتون لود کنین تا کاربرا همواره آخرین محتوای عرضه‌ شده رو مشاهده کنن (مثلا تو یک سایت خبری بهتره که اخبار لحظه ایی اصلاً کَش نشن تا احتمال اینکه کاربری این دست از اخبار داغ را از ست بده به حداقل برسه).

مــطالب مشـــابه

تفاوت میان برنامه‌نویسی شئ‌گرا و تابعی

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

ارسال شده در شهریور ۷, ۱۳۹۷

جوملا چیه؟

جوملا یه سیستم مدیریت محتوای تحت وبه که مدیریت و انتشار مطالب رو به شکل ساده امکان پذیر میکنه، جوملا امکانات گسترده ایی و با ابزار های خودش امکان گسترش نرم افزارها رو فراهم میکنه. با جوملا میتونین وبسایت ها و سامانه های تحت وب…

ارسال شده در شهریور ۶, ۱۳۹۷

عناصر مهم در ایجاد یک وبسایت فوق العاده

چطوری میتونیم یه وبسایت عالی داشته باشیم؟ هیچ دستور جادویی و یا الگوی خاصی برای حل این سوال وجود نداره. داشتن یه وبسایت فوق العاده میتونه به عوامل و فاکتور های مختلفی بستگی داشته باشه، مثلا مهارت شما یا بودجه ای که در اختیار دارین…

ارسال شده در شهریور ۴, ۱۳۹۷

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *