Spis treści[Ukryć][Pokazać]
Istnieje całkiem przyzwoita możliwość, że streamowałeś coś, jeśli spędziłeś jakiś czas online.
Streaming jest jednym z najczęstszych zastosowań najpopularniejszych aplikacji internetowych, niezależnie od tego, czy chodzi o YouTube, Spotify, Netflix czy sto innych.
Jednak biorąc pod uwagę, jak powszechne jest przesyłanie strumieniowe, łatwo jest przyjąć to za pewnik. Na przykład: Czym dokładnie jest streaming?
Każdy materiał medialny, na żywo lub nagrany, który jest przesyłany przez Internet do komputerów i urządzeń mobilnych i odtwarzany w czasie rzeczywistym, określany jest jako streaming.
Popularne rodzaje materiałów przesyłanych strumieniowo to podcasty, webcasty, filmy, programy telewizyjne i teledyski.
Elementy multimedialne, takie jak muzyka, wideo i inne rodzaje, są planowane i przesyłane w kolejnych pakietach danych, dzięki czemu można je natychmiast przesyłać strumieniowo.
Odpowiednie urządzenie, dostęp do usługi lub aplikacji strumieniowej oraz szybkie i niezawodne połączenie internetowe o dużej szybkości to wszystko, czego potrzebujesz do strumieniowania.
Uwaga: użyjemy usługi przesyłania strumieniowego wideo jako naszego przykładu.
W tym poście szczegółowo przyjrzymy się projektowi systemu usługi przesyłania strumieniowego i kluczowym czynnikom, które należy wziąć pod uwagę podczas opracowywania aplikacji do przesyłania strumieniowego wideo.
Wymagania systemowe
Wśród najpopularniejszych usług przesyłania strumieniowego wideo na świecie są YouTube i Netflix. Aby poprawić wrażenia użytkownika, ich architektura zawiera szereg elementów.
Taka usługa obejmuje popularne filmy, fakturowanie, systemy rekomendacji oparte na sztucznej inteligencji, a także funkcjonalność obejrzenia później, ale skoncentrujemy się na istotnych elementach.
Podstawowe cechy
W naszej koncepcji uwzględniliśmy następujące możliwości video streaming usługa:
- Twórcy treści mogą publikować filmy.
- Widzowie mogą oglądać filmy na wielu urządzeniach (mobilnych, telewizyjnych itp.).
- W filmach użytkownicy mogą komentować, lubić lub nie lubić.
- Do ich wyszukiwania można użyć tytułów filmów.
- Aby pokazać te statystyki użytkownikom, system może przechowywać wyświetlenia, polubienia i antypatie.
Cele systemu
- Nie powinno być żadnego buforowania, aby widzowie mogli oglądać filmy w czasie rzeczywistym.
- Przechowywanie wideo powinno być niezawodne. Nie powinieneś tracić przesłanych filmów.
- Wraz ze wzrostem użytkowników system powinien być skalowalny.
- Niskie opóźnienia i wysoka dostępność powinny być cechami systemu. W tej sytuacji spójność nie jest tak ważna, ponieważ użytkownik może trochę poczekać, zanim zobaczy świeżo przesłany film.
Pojedynczy serwer nie może obsłużyć dużej ilości danych, ponieważ system musi regularnie zarządzać dużym ruchem. Do obsługi systemu zostanie wykorzystana grupa serwerów.
Nie powinno być żadnych zauważalnych spadków prędkości dla klientów, nawet jeśli jeden serwer ulegnie awarii.
Architektura wysokiego poziomu
Program do strumieniowego przesyłania wideo może przyjmować jeden z trzech różnych rodzajów żądań:
- Prześlij (zapisz)
- Szukaj (przeczytaj)
- Zobacz (przeczytaj)
Ponieważ zapytania odczytu (wyszukiwania i przeglądania) będą często kilkakrotnie częstsze niż żądania zapisu (wysyłania), każde z nich obsługiwane jest przez oddzielny klaster serwerów.
Ponieważ program intensywnie czyta, będziesz musiał skonfigurować więcej serwerów do obsługi żądań odczytu niż przesyłania.
Każde żądanie złożone przez klienta jest kierowane do odpowiedniego mikroserwisu przez równoważenie obciążenia kiedy zostanie odebrany.
Usługa przesyłania
Usługa przesyłania, która przetwarza wideo, przesyła je na serwery Open Connect i udostępnia je wszystkim użytkownikom, spełnia żądanie przesyłania.
Usługa wyszukiwania
System równoważenia obciążenia wysyła żądanie wyszukiwania do mikroserwisu wyszukiwania, który następnie wysyła je do elastycznego wyszukiwania Netflix. Klient otrzymuje odpowiedź na wyszukiwanie elastyczne.
Elastyczne wyszukiwanie, niezwykle skalowalna, pełnotekstowa wyszukiwarka typu open source, jest używana przez Netflix do przeszukiwania milionów filmów.
Elastyczne wyszukiwanie jest wykorzystywane przez Netflix do analizy operacji obsługi klienta.
Zobacz usługę
Większość żądań wyświetlenia nie zostanie wysłana do systemu równoważenia obciążenia ani serwerów Netflix. Zamiast tego użytkownicy połączą się z lokalnymi dostawcami usług internetowych i będą zasilani bezpośrednio z najbliższego serwera Open Connect.
Jeśli jednak żądany film nie jest dostępny, zostanie wysłany do systemu równoważenia obciążenia i mikrousługi widoku.
Wideo jest następnie przeszukiwane w bazie danych metadanych, pobierane ze ścieżki określonej w metadanych i przesyłane do klienta.
Oczywiście ta technika obejmuje opóźnienia, dlatego praktycznie wszystkie żądania widoku są dostarczane przez Open Connect.
Prześlij filmy
Głównym celem YouTube jest przesyłanie filmu lub wideo. Usługa przesyłania strumieniowego wideo musi pokonać szereg przeszkód, zanim wideo stanie się dostępne dla konsumentów.
Trzymanie w kawałkach
Każdy przesłany film zostanie podzielony na wiele mniejszych plików, a nie będzie przechowywany jako jeden duży plik.
Jest to niezbędne, ponieważ producenci treści mogą przesyłać ogromne filmy. Przetwarzanie lub przesyłanie strumieniowe pojedynczego dużego pliku może chwilę potrwać.
Widz nie będzie musiał pobierać całego filmu, aby go odtworzyć, jeśli zostanie on zapisany i udostępniony mu w kawałkach.
Aby upewnić się, że między porcjami jest małe opóźnienie i że użytkownik ma płynne wrażenia podczas oglądania, klient najpierw zażąda pierwszej porcji z serwera, a następnie zażąda kolejnej porcji, gdy ta porcja jest odtwarzana.
Kolejka przetwarzania
Każdy film ma wiele fragmentów, a Netflix wykorzysta do ich analizy kilku równoczesnych pracowników, dlatego wymagana jest kolejka przetwarzania. Dzięki dodaniu ich do kolejki jest to prostsze.
Zadania będą gromadzone przez pracowników (lub kodery, które omówimy dalej), zakodowane w różnych formatach, a następnie przechowywane w rozproszonym magazynie plików.
Kodowanie wideo
Bardzo ważne jest przekonwertowanie i zapisanie fragmentów wideo w kilku formatach, aby widzowie mogli uzyskać do nich dostęp za pomocą technologii i połączenia internetowego, które są dla nich najlepsze.
Wideo może być oglądane przez widzów na laptopie, telefonie, telewizorze lub innych gadżetach. Optymalne formaty dla różnych urządzeń różnią się od siebie.
W podobny sposób różni widzowie mogą korzystać z różnych przepustowości, aby uzyskać dostęp do Internetu.
Niektórzy widzowie mogą z łatwością przesyłać strumieniowo filmy w wysokiej rozdzielczości w zależności od szybkości połączenia internetowego lub przepustowości, podczas gdy ci o mniejszej przepustowości będą mogli znacznie łatwiej przesyłać strumieniowo filmy o niskiej jakości.
Otwórz Połącz
Kiedy używasz przeglądarki do żądania Netflix.com, twój ISP (dostawca usług internetowych) jest naprawdę proszony o nawiązanie połączenia między twoim komputerem a serwerem Netflix.
Twój dostawca usług internetowych kontaktuje się z adresem IP Netflix w Twoim imieniu i zwraca Ci wynik. Publiczność w odległym kraju, takim jak Tokio, doświadczy znacznych opóźnień w transmisji i odbieraniu sygnałów ze względu na koncentrację tych serwerów w USA.
W przypadku filmów opóźnienia są znacznie bardziej niepokojące, ponieważ wiele danych musi być przesyłanych do widza, a jeśli tak, transmisja będzie opóźniona, a wrażenia użytkownika ucierpią.
Netflix wykorzystuje sprytną technikę, aby rozwiązać problem. Jest znany jako Open Connect (OC). Open Connect to CDN, z którego korzysta Netflix (Content Delivery Network).
W celu buforowania informacji online i szybkiego dostarczania ich konsumentom poprzez zmniejszenie fizycznej odległości między użytkownikiem a materiałem, CDN jest siecią serwerów rozproszonych i powiązanych centrów danych.
Równoważenie obciążenia
A pojedyncza aplikacja serwer nie jest w stanie obsłużyć liczby żądań (w tym przesyłania, wyszukiwania i przeglądania żądań), które przychodzą co sekundę.
Musi istnieć system równoważenia obciążenia, aby skutecznie rozłożyć obciążenie na wiele serwerów, ponieważ zaangażowanych jest kilka serwerów.
Netflix stosuje ciągłe mieszanie do dystrybucji obciążeń między serwerami, ponieważ może poradzić sobie z awariami serwerów i z łatwością dostosować się do instalacji dodatkowych serwerów.
Ponieważ popularność każdego filmu jest różna, rzeczywiste serwery obsługujące te filmy mogą doświadczać nierównego obciążenia. Korzystając z dynamicznych przekierowań HTTP, które pozwalają zajętemu serwerowi na przekierowanie nowego żądania do otwartego serwera, możemy rozwiązać ten problem.
Rozważania podczas opracowywania aplikacji do strumieniowego przesyłania wideo
Znajdź i rozwiń swoją niszę
Przy tak wielu różnych dostępnych materiałach, od rozrywki, przez edukację, po fitness, kluczowe jest zbudowanie wyróżnika o wyspecjalizowanej specjalizacji. Możesz stworzyć platformę dla filmów dokumentalnych lub filmów niezależnych.
Monetyzacja Aplikacji
Zakłócenie tradycyjnych wzorców monetyzacji może skutkować innowacjami i wzrostem. Plany powinny być zawsze dostosowane do grupy docelowej.
Ponieważ operatorzy zasiedziali już zmonopolizowali rynek, możesz spróbować zarabiać na bezpłatnych członkostwach za pomocą reklam lub lokowania produktu.
Wraz z tym, jeśli chcesz zbudować globalną platformę usług przesyłania strumieniowego, musisz wziąć pod uwagę potrzeby wielowalutowe.
Lepsze doświadczenie
Wydajność programu powinna zostać zwiększona w sytuacjach brzegowych, takich jak wolny internet lub użytkownicy z ograniczonym dostępem.
Przesyłanie strumieniowe filmów
Netflix nie tylko emituje treści, ale także wykorzystuje techniki inżynierii użytkownika i spersonalizowane sugestie, aby utrzymać użytkowników w kontakcie z usługą.
Zaplanuj utworzenie usługi przesyłania strumieniowego podobnej do Netflix, z naciskiem na analizę danych i dostosowywanie użytkowników.
Zarządzanie wieloma rolami aplikacji
W aplikacji Netflix widok użytkownika to po prostu jedna z kilku ról użytkownika. Planowanie jest wymagane dla różnych użytkowników i ich dostępu, w tym administratora, właściciela wideo, partnerów, moderatorów itp.
Wnioski
Podsumowując, w ten sposób usługi przesyłania strumieniowego wideo, takie jak Netflix, YouTube i inne filmy na pokładzie, śledzą je i pokazują milionom konsumentów.
Chociaż każda z tych aplikacji może mieć kilka dodatkowych cech, które je wyróżniają, podstawowa funkcjonalność opiera się na tych samych algorytmach.
Zrobiłem co w mojej mocy, aby przedstawić ogólny przegląd architektury systemu usług przesyłania strumieniowego, ale w tle dzieje się o wiele więcej.
Mam szczerą nadzieję, że ta wiedza okaże się wartościowa i wykorzystasz ją.
Dodaj komentarz