یادداشت ویراستار: اصل این مطلب در دی ۹۷ نوشته شده بود و در بهمن ۹۹ دوباره بررسی و بهروز شده است.
فروش سرور در همهی حوزههای دنیای فناوری نقش مهمی ایفا میکند. یکی از آخرین حوزههایی که برپایه شبکه ایجاد شده، استریمینگ است. در این محتوا میخواهیم به موضوع استریمینگ و مدیا سرور بپردازیم و نکات مهم در انتخاب بهترین سرور استریمینگ بیان کنیم. با توسعه شبکه آداکهمراه باشید.
استریمینگ چیست؟
استریمینگ یعنی به صورت بلادرنگ صدایی را گوش کنید یا ویدئویی را ببینید. منظور از بلادرنگ این است که به جای اینکه ویدئو یا صدا را دانلود کنید و فایل دانلود شده را پلی کنید، به صورت زنده از آن استفاده کنید و همزمان لود و پلی شود. مثل ویدئوهای اینترنتی یا وب کست های رویدادهای زنده. اصولا از بستر اینترنت برای استریمینگ مدیا استفاده میشود.
در استریمینگ میتوان قبل از لود کامل فایل، شروه به دیدن و شنیدن آن کرد مثلا فیلمی را پلی میکنید و همزمان با لود شدن میتوانید آن را مشاهده کنید حتی آن را پخش دوباره کنید. مثال دیگر، ضبط و پخش همزمان مسابقات به صورت زنده است.
استریمینگ مدیا در دو بخش ویدئو و موسیقی بیشترین استفاده را دارد. سایت های زیادی هستند که از استریمینگ استفاده میکنند مثلا یوتیوب و اینستا. چندین اپ در دنیا وجود دارد که با نصب آنها میتوانید از سرویس های استریمینگ مدیا استفاده کنید و با پرداخت اشتراک از خدمات آنها بهرهمند شوید. نماوا و فیلیمو جزو معروفترین استریمینگ های ایرانی هستند.
مولتی استریم چیست؟ مولتی استریمینگ که مالتی کستینگ هم گفته میشود استریمینگ قسمتی از محتوای زنده به چندین پلتفرم به صورت همزمان است. مثلا همزمان در فیس بوک و یوتیوپ و …
media server چیست؟
مدیا سرور محتوای ویدئویی و صوتی که کلاینت درخواست میکند را برای او فراهم میکند. این اصطلاح هم به نرم افزار این کار گفته میشود و هم هاستی که نرم افزار مدیا سرور را اجرا میکند. در واقع media server مسئول تامین مالتی مدیا بری کاربر است که شامل سخت افزار و نرم افزار مناسب این کار است.
مدیا سرور دستگاهی است که مدیا را ذخیره و به اشتراک میگذارد و به اینترنت و پهنای باند مناسب دسترسی دارد. برای راه اندازی مدیا سرور کافیست سرور، PC و NAS یا هر دستگاهی با ظرفیت ذخیره سازی مناسب داشته باشید و نرم افزار لازم را نصب کنید.
سرور استریمینگ باید بتواند همزمان به صدها و هزاران کاربر، سرویس دهد بنابراین باید سرور مناسبی برای آن انتخاب کرد. در ادامه با توسعه شبکه آداکهمراه باشید تا نکات مهم در انتخاب سرور مدیا بخوانید.
انتخاب سرور مدیا استریمینگ
مهمترین مرحله در راه اندازی streaming server انتخاب سرور مناسب استریمینگ است. فرآیند سنجش و انتخاب سختافزار مناسب برای سرور مدیا استریمینگ (Streaming Media)، فرآیند پیچیدهای است. پاسخهای متفاوتی برای “چه توانی برای سرور خود مد نظر دارید؟” وجود دارد که معمولا پاسخ افراد به آن “حداقل مقدار ممکن یا مقداری که برای انجام کار کافی باشد” است. اگر در انتخاب خود تردید دارید، طبیعی و قابل درک است:
از طرفی نمیخواهید زیاد هزینه کنید، اما نمیخواهید در زمانی کوتاه هم نیاز مجدد به خرید پیدا کنید. چنین پاسخهایی، جای انعطاف و تغییر را باقی میگذارد که با ذات منبع محور و غیرقابل پیشبینی ارایه سرویس ویدئو استریمینگ، قابل ترکیب است.
اگر از Streaming Engine های پیشرو در بازار استفاده میکنید، محدودیتی در تعداد استریمهایی که میتوانید Transcode یا تبدیل کد کنید، وجود ندارد اما با محدودیت در سختافزار سرور و پهنای باندی که دیتاسنتر یا تامین کننده هاستینگ ارایه میدهند، مواجه میشوید. Transcode به فرآیندی گفته میشود که مدیا و ویدئوها از فرمتی به فرمتی دیگر تبدیل میشوند: مانند Beta به VHS و VHS به QuickTime و QuickTime به MPEG.
شما هنگام انتخاب Media Server، چگونه میزان توانی که لازم دارید را تعیین میکنید؟ در این مورد، عوامل مختلفی نقش دارند که مهمترین آن، ایجاد توازن در دو محدودیت است: پهنای باند شبکه و ظرفیت پردازش.
برخی مواقع، تعداد منابع و در نتیجه استریمهای شما زیاد است که خود، عاملی برای ایجاد گلوگاه در ارایه ویدئو استریمینگ است. محدودیت پهنای باند و پر شدن ظرفیت حافظه، باعث میشود سرور برای استریمینگ از حداکثر ظرفیتش استفاده کند. خوشبختانه برای اجتناب از Overload شدن سرور، راهکارهایی وجود دارد که در ادامه به صورت چهار نکته بیان میشود. این چهار نکته به شما کمک میکند سختافزار مدیا سرورتان را طوری انتخاب کنید که نیازهای استریمینگ را برآورده کند.
برای خرید سرور hp روی لینک بزنید.
نکته اول: تعیین تعداد استریمینگ های ورودی و چگونگی بستهبندی آنها
تعداد استریمینگ های ورودی خود را تعیین کنید و بدانید که چگونه بستهبندی میشوند. پردازنده و حافظه، ظرفیت پردازشی سرور را تحت تاثیر قرار میدهند، برای جلوگیری از ایجاد Overload ای که به دلیل محدودیت در ظرفیت پردازشی به وجود میآید، باید تعداد استریمهایی که سرورتان باید به صورت همزمان پردازش کند را بدانید و بدانید چه میزان حافظه و رمی لازم است.
چند استریم برای Transcode نیاز دارید؟
همه پردازشها به توان پردازشی مشابهی نیاز ندارند. بعد از فهمیدن تعداد استریمهای ورودی که سرورتان باید کنترل کند، باید برنامه پکیج کردن استریمها برای ارایه را بدانید.
فعالیتهای Encoding و Transcoding (رمزگذاری و تبدیل کد)، ذاتاً پردازشهایی مبتنی بر پردازنده هستند. برای مثال، اجرای بعضی چیزها مثل (Flash Media Live Encoder (FMLE، در محیط دسکتاپ، حتی تا ۸۰ درصد از پردازنده استفاده میکند.
به هر حال، مقدار پردازنده لازم برای انجام فعالیتهای سنتی تبدیل کد، متفاوت است. تبدیل کد، یا به تغییر Codecها (مثلا تبدیل VP8 به H.264) یا به Transrating Stream برای دسترسی به (Adaptive Bitrate (ABR اشاره دارد (برای مثال، تبدیل Single Bitrate Stream به چهار نسخه). هر دوی اینها از پردازنده استفاده میکنند اما تغییر Bitrate استریم برای ارایه ABR، پردازنده بیشتری استفاده میکند.
گاهی اوقات هم ممکن است استریم فقط (Transmuxe (Transcode-Multiplexing شود (مثلا تبدیل RTMP به HLS). این فرآیند را Passthrough Processing مینامند: یعنی کاری که پردازنده بسیار کمتری برای پکیجینگ لازم دارد.
اگر لازم است که چندین استریم را برای ارایه ABR، تبدیل کد کنید، به سروری با ظرفیت پردازشی بیشتر نیاز دارید. تعداد استریمهایی که سرور میتواند تبدیل کد کند، بسیار بسیار متفاوت است. با این حال ما در اینجا سرورها و حجمهای کاری رایج را بررسی میکنیم تا کاربران را در شناخت آنچه نیاز دارند، کمک کنیم.
چقدر حافظه لازم دارید؟
حافظه مصرفی در فرایندهای دریافت و بستهبندی، معمولا با کل تعداد اتصالات استریم ورودی، که به صورت فرآیندهای Java، قابل مشاهده هستند، ارتباط دارد: هرچه استریمها و منابع ورودی، بیشتر باشد، سرور شما به ظرفیت پردازشی بیشتری نیاز دارد. مثلا در نصب Wowza Streaming Engine ، نسخه سروری لازم برای (Java Runtime Environment (JRE، به صورت خودکار، نصب میشود. بعضی از گزارشهای کاربران سختافزارهای سنتی، حاکی از آن است که JRE، استفاده از RAM را تا ۸ گیگابایت محدود میکند، هرچند نصب سختافزار مدرن، میتواند تا ۱۶ گیگابایت را فراهم کند.
تنظیمات پیشفرض در Wowza Streaming Engine برابر با ۱۰ گیگابایت است، اما این مقدار را میتوانید در XML به حداکثر ۱۶ گیگابایت به ازای هر سختافزار، ویرایش کنید. معمولا رساندن پیکربندی رم به ۳۲ گیگابایت، برای هماهنگ کردن تعداد زیادی از منابع ورودی، مناسب است.
نکته دوم: تخمین حداکثر همزمانی استریم ها در سرور شما
ارتباط بین Stream Bitrate و پهنای باند، بسیار شبیه به ارتباط ورودی و خروجی است، که البته در سمت خروجی، چالش بیشتری وجود دارد. چرا؟ همیشه هم حدس زدن تعداد بینندگانی که دارید و یا نسخههایی که آن بینندگان نیاز دارند، راحت نیست.
برای اجتناب از Overloadهای مرتبط با پهنای باند، حداکثر پهنای باند خروجی که در سرور باید کنترل شود را تخمین بزنید. مثال سادهای برای روشنتر شدن مطلب ارایه میدهم.
فرض کنید دیتاسنتری استفاده میکنید که حداکثر ظرفیت توان عملیاتی ۲GB/s را فراهم میکند. اگر بخواهید بر اساس قانون ۸۰ درصدی بالا عمل کنید، باید برای داشتن حداکثر پهنای باندی با سرعت ۱.۶ GB/s، برنامهریزی کنید.
برای اینکه بدانید چه تعداد استریم را میتوانید با سرعت ۱.۶ GB/s تنظیم کنید، باید ابتدا میانگین اندازه استریمی که به مخاطبان ارایه خواهد شد را مشخص کنید. یادتان باشد، متوسط رزولوشن استریم مخاطبان شما، میتواند با رزولوشن استریم اصلی شما متفاوت باشد. اگر استریم اصلی را به نسخههای کوچکتر، تبدیل کد کنید، ممکن است مخاطبان، استریم را ۴۰ درصد کوچکتر از استریم اصلی مشاهده کنند (در مورد استریمهای خروجی، به اندازه استریمی که متوسط مخاطبان میبینند، توجه میکنیم). سه فریم در ثانیه را در نظر بگیرید. برای اندازه استریم به جدول زیر توجه کنید:
با استفاده از اندازه استریم متوسط مخاطبان، با قاطعیت میتوانید پهنای باند مورد نیاز خود را تعیین کنید. برای این کار Stream Bitrate را در حداکثر تعداد استریمها ضرب کنید که حاصل باید از ۸۰ درصد کل پهنای باند در دسترس کمتر باشد:
stream bitrate * number of peak concurrent streams < 80% of total available bandwidth
در ادامه با مثالی همراه باشید: در اینجا چند سناریو برای حداکثر ارتباطات وجود دارد، که اندازه استریم متوسط مخاطبان، مقادیر متفاوتی دارند.
به خاطر داشته باشید که باید پهنای باند استریم ورودی خود را حساب کنید. این مقدار، معمولا درصد کوچکی از تمام استریمهای همزمان شما خواهد بود. در سناریوهایی با تعداد زیادی Broadcastهای یک به یک یا یک به چند، پهنای باند استریمهای ورودی میتواند اضافه شوند. در نهایت، اگر این محاسبات نشان دهد که پهنای باند سرور شما کافی نیست، میتوانید از CDN استفاده کنید تا استریمهایی را برای هر تعداد مخاطب فراهم کنید. مثالی از Content Delivery Network یا شبکه ارایه محتوا، Wowza CDN است. قابلیتهای Stream Targets این امکان را میدهد تا یک استریم یا گروهی از نسخههای استریم تبدیل کد شده را، از Wowza Streaming Engine گرفته تا Wowza CDN، برای هر تعداد از مخاطبان ارسال کنید.
برای استفاده از خدمات توسعه شبکه آداکدر زمینه تعمیر لپ تاپ روی لینک بزنید.
نکته سوم: انتخاب مدل درست پیاده سازی
نکتهای دیگر که باید به آن توجه شود این است که، چه در زیرساخت ابری نصب و راهاندازی شود و چه به صورت On-Premise، از فضای سختافزاری سرور استفاده میشود. راهاندازی کلود مزایایی مانند استفاده از منابع کارآمد و صرفهجویی در مخارج کلی دارد.
با این وجود، زیرساخت ابری از مجازی سازی و مدیریت منظم انبوهی از منابع – که به شکل سنتی به منابع فیزیکی مانند پردازنده، شبکه و رم، اضافه میشوند- استفاده میکنند. و وقتی با فعالیتهای رایج ذخیره سازی ترکیب میشود، حجم سرویسدهی در ماشین مجازی را کاهش میدهد.
از طرفی دیگر، پیکربندی Bare-Metal، ظرفیتهای پردازشی بزرگتری را فراهم میکند. در سرور Bare Metal، شما میتوانید انتظار استفاده از حداکثر ۸۰ درصد از کل پهنای باند شبکه و حتی درصد بالاتری از پردازنده را داشته باشید. این مورد، قابل مقایسه است با راهاندازی مجازی و ابری که قابلیت استفاده از پردازنده تا ۶۵ درصد و شبکه در دسترس نیز حدود ۵۰ درصد افزایش مییابد. در حالی که مزیت پیکربندی Bare-Metal، دسترسی به منابع بزرگتر است، محیطهای ابری و مجازی، منعطف و کاربرپسند است و قابلیتهای Self-Service ارایه میدهد. برای بسیاری از مردم، این مزایا به معایب آن میارزد.
نکته چهارم: استفاده از GPU Offload و CDN
برای اینکه از حداکثر ظرفیت پردازشی سرور خود استفاده کنید، قابلیتهای زیرساختی وجود دارد که شما میتوانید از آنها استفاده کنید: GPU Offload و CDN ها.
ارتباط GPU Offload و شتابدهی
Wowza Streaming Engine، استفاده از GPU offload در تبدیلکننده های کد (Transcoder) را پشتیبانی میکند بنابراین میتوانید توان پردازشی خود را به حداکثر برسانید. با استفاده از GPU Scaling، کاربران هر دو پیکربندی Cloud و Bare-Metal، میتوانند تا ۷۵ درصد از پردازنده را در تبدیل کد حجمهای کاری Offload کنند. (یعنی پردازش را از دوش پردازنده برداشته و بر روی GPU قرار دهند.)
در تصویر بالا که با عنوان “پیکربندی سادهای برای Broadcast OTT ” میبینید، با فعال کردن GPU scaling، استفاده از CPU را از ۶۸ درصد به ۴۳ درصد کاهش میدهد. با پیشرفتهایی که در GPU های Wowza Streaming Engine ارایه شده، استفاده کمتر از CPU-Workload فراهم شده است: در بعضی موارد، بیش از ۹۰ درصد کاهش در CPU-Workload، امکانپذیر است.
Content Delivery Network ها
بکارگیری استریمها در CDN یکی از رایجترین راهها برای حذف گلوگاه (Bottleneck) در سرور است. با استفاده از CDN، برای هر نسخه، استریم خروجی را به یک تک استریم، کاهش میدهد.
همان گونه که اشاره شد، میتوان از قابلیتهای Stream Targets در Wowza Streaming Engine استفاده کرد تا سینگل استریم و یا استریم چند بیت ریتی را در Wowza CDN قرار داد تا به دست عموم مخاطبان برسد. این کار حجم کار را از سرور شما برمیدارد تا استریم برای تعداد بیشتری از مخاطبان به طور همزمان، قابل نمایش باشد و در عین حال دیگر نگرانی از بابت پهنای باند نخواهید داشت.
نکته مهم، پیکربندی CDN است که باعث افزایش چشمگیری در تعداد درخواستها از سرور Wowza Streaming Engine میشود این پیکربندیها شامل Cache Miss Ratio و (Time-To-Live (TTL برای محتوای کش شده است.
حرف آخر
هر چند که ممکن است این نکات، قطعی و کامل نباشد اما امیدواریم کمک کند تا گزینههای پیش رو و منابع سرورتان را به طور مناسب انتخاب کنید. توصیه ما به شما این است که حتی پس از سنجش معیارهای انتخاب، کارایی را تحت لود، تست کنید و یا از مجازی سازی استفاده کنید که امکان هماهنگی و افزودن منابع را به شما میدهد.