فهرست مندرجات[پنهان شدن][نمایش]
اگر زمانی را به صورت آنلاین سپری کرده باشید، احتمال بسیار مناسبی وجود دارد که چیزی را پخش کرده باشید.
استریمینگ یکی از رایج ترین کاربردها برای شناخته شده ترین برنامه های اینترنت است، چه از طریق YouTube، Spotify، Netflix یا صدها برنامه دیگر.
با این حال، با توجه به رایج بودن پخش جریانی، ساده است که آن را بدیهی بدانید. به عنوان مثال: جریان دقیقاً چیست؟
هر گونه محتوای رسانه ای، چه زنده و چه ضبط شده، که از طریق اینترنت به رایانه ها و دستگاه های تلفن همراه ارسال می شود و در زمان واقعی پخش می شود، جریان نامیده می شود.
انواع متداول مطالب پخش شامل پادکست، پخش اینترنتی، تصاویر متحرک، نمایش های تلویزیونی و موزیک ویدیوها است.
آیتمهای رسانهای مانند موسیقی، ویدیو و انواع دیگر در بستههای داده متوالی برنامهریزی و منتقل میشوند تا بتوانند فوراً پخش شوند.
یک دستگاه مناسب، دسترسی به یک سرویس یا برنامه استریم، و یک اتصال اینترنت پرسرعت سریع و قابل اعتماد تمام آن چیزی است که برای پخش جریانی نیاز دارید.
توجه: ما از یک سرویس پخش ویدئو به عنوان مثال استفاده خواهیم کرد.
این پست نگاهی عمیق به طراحی سیستم سرویس استریم و عوامل کلیدی که در هنگام توسعه برنامههای پخش ویدئو باید در نظر گرفته شود، خواهد داشت.
سیستم مورد نیاز
از جمله محبوب ترین سرویس های پخش ویدئو در جهان می توان به یوتیوب و نتفلیکس اشاره کرد. برای بهبود تجربه کاربر، معماری آنها شامل تعدادی عنصر است.
چنین سرویسی شامل فیلمهای محبوب، صورتحساب، سیستمهای توصیه مبتنی بر هوش مصنوعی و قابلیتهای بعدی تماشا میشود، اما ما روی عناصر ضروری تمرکز خواهیم کرد.
کیفیت های اصلی
ما قابلیت های زیر را در مفهوم خود برای یک گنجانده ایم جریان ویدئو سرویس:
- سازندگان محتوا می توانند ویدیو ارسال کنند.
- بینندگان می توانند از دستگاه های زیادی برای تماشای ویدیوها (موبایل، تلویزیون و غیره) استفاده کنند.
- در ویدیوها، کاربران می توانند اظهار نظر کنند، پسندند یا نپسندند.
- از عناوین ویدیوها می توان برای جستجوی آنها استفاده کرد.
- برای نمایش این آمار به کاربران، سیستم میتواند بازدیدها، پسندیدنها و نپسندیدنها را ذخیره کند.
اهداف سیستم
- نباید هیچ بافری وجود داشته باشد تا بینندگان بتوانند ویدیوها را در زمان واقعی تماشا کنند.
- فضای ذخیره سازی ویدیو باید قابل اعتماد باشد. شما نباید ویدیوهایی را که آپلود کرده اید از دست بدهید.
- با افزایش کاربران، سیستم باید مقیاس پذیر باشد.
- تاخیر کم و در دسترس بودن بالا باید از ویژگی های سیستم باشد. در این شرایط، ثبات چندان مهم نیست، زیرا برای کاربر اشکالی ندارد که قبل از دیدن یک فیلم تازه ارسال شده، مدتی صبر کند.
یک سرور نمی تواند حجم داده ها را مدیریت کند زیرا سیستم باید ترافیک قوی را به طور منظم مدیریت کند. گروهی از سرورها برای سرویس دهی به سیستم استفاده خواهند شد.
حتی اگر یکی از سرورها از کار بیفتد، نباید هیچ تاثیر قابل توجهی روی سرعت مشتری ایجاد شود.
معماری سطح بالا
یک برنامه پخش ویدئو می تواند یکی از سه نوع درخواست مختلف را بپذیرد:
- آپلود (نوشتن)
- جستجو (بخوانید)
- مشاهده (بخوانید)
از آنجایی که پرس و جوهای خواندنی (جستجو و مشاهده) اغلب چندین برابر درخواست های نوشتن (آپلود) هستند، هر یک از آنها توسط یک خوشه جداگانه از سرورها مدیریت می شود.
از آنجایی که برنامه خواندن فشرده است، باید سرورهای بیشتری را برای رسیدگی به درخواست های خواندن نسبت به آپلودها راه اندازی کنید.
هر درخواستی که توسط یک مشتری ارسال می شود، توسط مشتری به میکروسرویس مناسب هدایت می شود متعادل کننده بار زمانی که دریافت می شود.
سرویس آپلود
سرویس آپلود که ویدیو را پردازش می کند، آن را در سرورهای Open Connect آپلود می کند و آن را برای همه کاربران قابل دسترسی می کند، درخواست آپلود را انجام می دهد.
سرویس جستجو
متعادل کننده بار درخواست جستجو را به میکروسرویس جستجو می فرستد و سپس آن را به جستجوی الاستیک نتفلیکس می فرستد. مشتری پاسخ جستجوی الاستیک را دریافت می کند.
جستجوی الاستیک، یک موتور جستجوی متن باز متن باز فوق العاده مقیاس پذیر، توسط نتفلیکس برای جستجو در میلیون ها ویدیو استفاده می شود.
جستجوی الاستیک توسط نتفلیکس برای تجزیه و تحلیل عملیات خدمات مشتری استفاده می شود.
مشاهده سرویس
اکثر درخواستهای مشاهده به load balancer یا سرورهای Netflix ارسال نمیشوند. در عوض، کاربران به ISP های محلی متصل می شوند و مستقیماً از نزدیکترین سرور Open Connect تغذیه می شوند.
اما در صورتی که ویدیوی درخواستی قابل دسترسی نباشد به لود بالانس و میکروسرویس view ارسال می شود.
سپس ویدیو در پایگاه داده ابرداده جستجو می شود، از مسیر مشخص شده در ابرداده بازیابی می شود و به مشتری منتقل می شود.
البته این تکنیک شامل تأخیر است، به همین دلیل است که عملاً تمام درخواستهای مشاهده از طریق Open Connect ارائه میشوند.
فیلم ها را بارگذاری کنید
هدف اصلی یوتیوب آپلود فیلم یا ویدیو است. یک سرویس پخش ویدیو قبل از اینکه یک ویدیو را برای مصرف کنندگان خود در دسترس قرار دهد، باید بر تعدادی از موانع غلبه کند.
نگهداری در قطعات
هر ویدیوی ارسالی به جای اینکه به عنوان یک فایل بزرگ نگهداری شود به چندین فایل کوچکتر تقسیم می شود.
این امر ضروری است زیرا تولیدکنندگان محتوا قادر به ارسال ویدیوهای بزرگ هستند. پردازش یا پخش یک فایل بزرگ ممکن است کمی طول بکشد.
اگر بیننده ویدیو را به صورت تکهتکه ذخیره کرده و در دسترس او قرار دهد، نیازی به دانلود کامل ویدیو برای پخش آن نخواهد داشت.
برای اطمینان از اینکه تاخیر کمی بین تکهها وجود دارد و کاربر تجربه تماشای روانی دارد، مشتری ابتدا اولین قطعه را از سرور درخواست میکند و سپس در حین پخش آن قطعه، قطعه زیر را درخواست میکند.
صف پردازش
هر ویدیو دارای تکه های متعددی است و نتفلیکس از چندین کارگر همزمان برای تجزیه و تحلیل آنها استفاده می کند، بنابراین یک صف پردازش لازم است. با اضافه کردن آنها به صف، این کار ساده تر می شود.
کارها توسط کارگران (یا رمزگذارها، که در ادامه به آنها خواهیم پرداخت) جمع آوری می شوند، در قالب های مختلف کدگذاری می شوند و سپس در ذخیره سازی فایل های توزیع شده ذخیره می شوند.
رمزگذاری ویدئو
تبدیل و ذخیره تکه های ویدیو در چندین فرمت بسیار مهم است تا بینندگان بتوانند با استفاده از فناوری و اتصال اینترنتی که برای آنها بهترین کار را انجام می دهد به آنها دسترسی داشته باشند.
بینندگان میتوانند ویدیو را روی لپتاپ، تلفن، تلویزیون یا ابزارهای دیگر مشاهده کنند. فرمت های بهینه برای دستگاه های مختلف با یکدیگر متفاوت است.
در روشی مشابه، بینندگان مختلف میتوانند از پهنای باند مختلف برای دسترسی به اینترنت استفاده کنند.
برخی از بینندگان بسته به سرعت اتصال به اینترنت یا پهنای باند خود میتوانند به راحتی فیلمهای با وضوح بالا را پخش کنند، در حالی که آنهایی که پهنای باند کمتری دارند میتوانند ویدیوهای با کیفیت پایین را با سهولت بیشتری پخش کنند.
Connect را باز کنید
هنگامی که از مرورگر خود برای درخواست Netflix.com استفاده می کنید، ISP (ارائه دهنده خدمات اینترنت) واقعاً از شما خواسته می شود تا بین رایانه شما و سرور Netflix ارتباط برقرار کند.
ISP شما از طرف شما با آدرس IP Netflix تماس می گیرد و نتیجه را به شما برمی گرداند. مخاطبان کشوری دورافتاده مانند توکیو به دلیل تمرکز این سرورها در ایالات متحده، تاخیرهای قابل توجهی را در ارسال و دریافت سیگنال ها تجربه خواهند کرد.
در مورد ویدئوها، تاخیر بسیار بیشتر نگران کننده است، زیرا داده های زیادی باید به بیننده منتقل شود، و اگر اینطور باشد، استریم به تاخیر می افتد و تجربه کاربر آسیب می بیند.
نتفلیکس از یک تکنیک هوشمندانه برای رفع مشکل استفاده می کند. به عنوان Open Connect (OC) شناخته می شود. Open Connect CDN است که Netflix از آن استفاده می کند (شبکه تحویل محتوا).
به منظور ذخیره اطلاعات آنلاین و تحویل سریع آن به مصرف کنندگان با کاهش فاصله فیزیکی بین کاربر و مواد، CDN شبکه ای از سرورهای گسترده و مراکز داده مرتبط است.
تعادل بار
A برنامه تک سرور قادر به رسیدگی به حجم درخواستهایی (از جمله درخواستهای آپلود، جستجو و مشاهده) نیست که هر ثانیه میرسد.
باید یک متعادل کننده بار وجود داشته باشد تا به طور موثر بار کاری را در بین سرورهای متعدد توزیع کند زیرا چندین سرور درگیر هستند.
نتفلیکس از هش کردن دائمی برای توزیع بارها در بین سرورها استفاده می کند زیرا می تواند با خرابی های سرور مقابله کند و نصب سرورهای اضافی را به راحتی انجام دهد.
از آنجایی که محبوبیت هر ویدیو متفاوت است، سرورهای واقعی میزبان این فیلمها میتوانند بار نابرابر را تجربه کنند. با استفاده از تغییر مسیرهای پویا HTTP، که به یک سرور مشغول اجازه می دهد تا درخواست جدیدی را به یک سرور باز هدایت کند، می توانیم این مشکل را برطرف کنیم.
ملاحظات در هنگام توسعه یک برنامه پخش ویدئو
جایگاه خود را پیدا و توسعه دهید
با انواع مختلف مواد موجود، از سرگرمی گرفته تا آموزش و تناسب اندام، ساختن یک تمایز با تخصص تخصصی بسیار مهم است. می توانید بستری برای فیلم های مستند یا مستقل ایجاد کنید.
درآمدزایی اپلیکیشن
برهم زدن الگوهای سنتی کسب درآمد می تواند منجر به نوآوری و رشد شود. برنامه ها باید همیشه متناسب با مخاطب هدف باشد.
از آنجایی که شرکتهای فعلی بازار را در انحصار خود درآوردهاند، میتوانید از عضویت رایگان با تبلیغات یا قرار دادن محصول کسب درآمد کنید.
در کنار این، اگر می خواهید یک پلت فرم خدمات پخش جهانی بسازید، باید نیازهای چند ارزی را در نظر بگیرید.
تجربه بهتر
عملکرد برنامه باید برای شرایط لبه مانند اینترنت کند یا کاربران با دسترسی محدود افزایش یابد.
پخش جریانی ویدیوها
نتفلیکس نه تنها محتوا را پخش میکند، بلکه از تکنیکهای مهندسی کاربر و پیشنهادات شخصیسازیشده برای نگهداشتن کاربران به این سرویس استفاده میکند.
برنامه ریزی برای ایجاد یک سرویس پخش مشابه نتفلیکس با تاکید بر تجزیه و تحلیل داده ها و سفارشی سازی کاربر.
مدیریت نقش های متعدد برنامه
در برنامه نتفلیکس، نمای کاربر به سادگی یکی از چندین نقش کاربر است. برنامه ریزی برای کاربران مختلف و دسترسی آنها از جمله سرپرست، مالک ویدئو، شرکا، ناظران و غیره مورد نیاز است.
نتیجه
در خاتمه، اینگونه است که سرویسهای پخش ویدئو مانند نتفلیکس، یوتیوب و سایر ویدیوهای موجود، آنها را ردیابی میکنند و به میلیونها مشتری نشان میدهند.
اگرچه هر یک از این برنامه ها ممکن است دارای چند ویژگی اضافی باشد که آنها را متمایز می کند، عملکرد اساسی بر اساس الگوریتم های مشابهی است.
من تمام تلاشم را کردم تا یک نمای کلی از معماری سیستم سرویس استریم به شما ارائه دهم، اما در پسزمینه چیزهای بیشتری در جریان است.
من واقعاً امیدوارم که این دانش را ارزشمند بدانید و از آن استفاده کنید.
پاسخ دهید