Talaan ng nilalaman[Tago][Ipakita]
Mayroong medyo disenteng posibilidad na nag-stream ka ng isang bagay kung gumugol ka ng anumang oras online.
Ang streaming ay isa sa mga pinakakaraniwang gamit para sa mga pinakakilalang app sa internet, ito man ay sa pamamagitan ng YouTube, Spotify, Netflix, o isang daang iba pa.
Gayunpaman, kung isasaalang-alang kung gaano karaniwan ang streaming, simple lang na balewalain ito. Halimbawa: Ano ang streaming, eksakto?
Ang anumang materyal ng media, live man o naka-record, na ipinadala sa internet sa mga computer at mobile device at na-play pabalik sa real-time ay tinutukoy bilang streaming.
Kasama sa mga karaniwang uri ng streaming material ang mga podcast, webcast, motion picture, palabas sa telebisyon, at music video.
Ang mga item sa media tulad ng musika, video, at iba pang uri ay pinaplano at inililipat sa magkakasunod na packet ng data upang mai-stream ang mga ito kaagad.
Ang angkop na device, access sa isang streaming service o app, at isang mabilis, maaasahang high-speed na koneksyon sa internet ang kailangan mo lang para mag-stream.
Tandaan: Gagamit kami ng serbisyo ng video streaming bilang aming halimbawa.
Susuriin ng post na ito ang disenyo ng system ng serbisyo ng streaming at mga pangunahing salik na dapat isaalang-alang habang bumubuo ng mga application ng video streaming.
System Kinakailangang
Kabilang sa mga pinakasikat na serbisyo ng video streaming sa mundo ay ang YouTube at Netflix. Upang mapabuti ang karanasan ng user, ang kanilang arkitektura ay may kasamang ilang elemento.
Kasama sa naturang serbisyo ang mga sikat na pelikula, pag-invoice, mga sistema ng rekomendasyon na nakabatay sa AI, at paggana ng panonood sa ibang pagkakataon, ngunit tututuon namin ang mga mahahalagang elemento.
Mga Pangunahing Katangian
Isinama namin ang mga sumusunod na kakayahan sa aming konsepto para sa a video streaming serbisyo:
- Ang mga tagalikha ng nilalaman ay maaaring mag-post ng mga video.
- Maaaring gumamit ang mga manonood ng maraming device para manood ng mga video (mobile, TV, atbp.).
- Sa mga video, maaaring magkomento, mag-like, o mag-dislike ang mga user.
- Ang mga pamagat ng mga video ay maaaring gamitin upang hanapin ang mga ito.
- Upang ipakita ang mga istatistikang ito sa mga user, maaaring mag-imbak ang system ng mga view, gusto, at hindi gusto.
Mga layunin ng system
- Hindi dapat magkaroon ng anumang buffering upang ang mga manonood ay makapanood ng mga video nang real-time.
- Ang storage para sa video ay dapat na maaasahan. Hindi mo dapat mawala ang mga video na iyong na-upload.
- Sa pagdami ng mga user, dapat na scalable ang system.
- Ang mababang latency at mataas na kakayahang magamit ay dapat na mga tampok ng system. Sa sitwasyong ito, hindi ganoon kahalaga ang pagkakapare-pareho dahil okay lang para sa isang user na maghintay ng ilang oras bago makakita ng bagong isinumiteng pelikula.
Hindi kayang pangasiwaan ng isang server ang dami ng data dahil dapat regular na pamahalaan ng system ang malakas na trapiko. Isang pangkat ng mga server ang gagamitin para pagsilbihan ang system.
Hindi dapat magkaroon ng anumang kapansin-pansing epekto sa bilis para sa mga kliyente kahit na nag-crash ang isang server.
Mataas na Antas na Arkitektura
Maaaring tanggapin ng isang video streaming program ang isa sa tatlong magkakaibang uri ng mga kahilingan:
- Mag-upload (magsulat)
- Maghanap (basahin)
- Tingnan (basahin)
Dahil ang mga read query (search at view) ay madalas na ilang beses na mas madalas kaysa sa write requests (upload), ang bawat isa sa kanila ay pinangangasiwaan ng isang hiwalay na cluster ng mga server.
Dahil read-intensive ang program, kakailanganin mong mag-set up ng mas maraming server para pangasiwaan ang mga read request kaysa sa mga upload.
Ang bawat kahilingan na ginawa ng isang kliyente ay iruruta sa tamang microservice ng load balancer kapag ito ay natanggap.
Serbisyo sa Pag-upload
Ang serbisyo sa pag-upload, na nagpoproseso ng video, ay nag-a-upload nito sa mga server ng Open Connect at ginagawa itong naa-access sa lahat ng mga user, ay tumutupad sa isang kahilingan sa pag-upload.
Serbisyo sa Paghahanap
Ipinapadala ng load balancer ang kahilingan sa paghahanap sa microservice ng paghahanap, na pagkatapos ay ipinapadala ito sa Elastic na paghahanap ng Netflix. Natanggap ng kliyente ang sagot ng Elastic na paghahanap.
Ang elastic na paghahanap, isang hindi kapani-paniwalang scalable na full-text na open-source na search engine, ay ginagamit ng Netflix upang maghanap sa milyun-milyong video.
Ang elastic na paghahanap ay ginagamit ng Netflix upang suriin ang mga operasyon ng serbisyo sa customer.
Tingnan ang Serbisyo
Ang karamihan ng mga kahilingan sa view ay hindi ipapadala sa load balancer o sa mga server ng Netflix. Sa halip, ang mga user ay kumonekta sa mga lokal na ISP at mapapakain nang diretso mula sa pinakamalapit na Open Connect server.
Gayunpaman, kung hindi naa-access ang hiniling na video, ipapadala ito sa load balancer at sa view microservice.
Pagkatapos ay hahanapin ang video sa database ng metadata, kinukuha mula sa landas na tinukoy sa metadata, at ipinadala sa kliyente.
Siyempre, kasama sa diskarteng ito ang latency, kaya naman halos lahat ng mga kahilingan sa view ay ibinibigay sa pamamagitan ng Open Connect.
Mag-upload ng mga video
Ang pangunahing layunin ng YouTube ay mag-upload ng pelikula o video. Dapat malampasan ng isang serbisyo ng video streaming ang ilang mga hadlang bago gawing accessible ang isang video sa mga consumer nito.
Pagpapanatiling sa Piraso
Ang bawat isinumiteng video ay hahatiin sa maraming mas maliliit na file sa halip na itago bilang isang malaking file.
Mahalaga ito dahil ang mga producer ng nilalaman ay nakakapagsumite ng malalaking video. Maaaring magtagal bago maproseso o mai-stream ang isang malaking file.
Hindi na kailangang i-download ng manonood ang kumpletong video upang i-play ito kung ito ay nai-save at ginawang available sa kanila nang pira-piraso.
Upang matiyak na may kaunting latency sa pagitan ng mga chunks at na ang user ay may maayos na karanasan sa panonood, hihilingin muna ng kliyente ang unang tipak mula sa server at pagkatapos ay hihilingin ang sumusunod na tipak habang naglalaro ang tipak na iyon.
Pagproseso ng Queue
Ang bawat video ay may maraming mga chunks, at ang Netflix ay gagamit ng ilang sabay-sabay na manggagawa upang pag-aralan ang mga ito, kaya kinakailangan ang isang processing queue. Sa pamamagitan ng pagdaragdag sa kanila sa pila, ginagawa itong mas simple.
Ang mga trabaho ay kokolektahin ng mga manggagawa (o mga encoder, na susunod naming tatalakayin), ie-encode sa iba't ibang mga format, at pagkatapos ay iimbak sa distributed file storage.
Encoding Video
Napakahalagang i-convert at i-save ang mga video chunks sa ilang mga format upang ma-access ng mga manonood ang mga ito gamit ang teknolohiya at koneksyon sa internet na pinakamahusay na gumagana para sa kanila.
Ang video ay makikita sa isang laptop, telepono, TV, o iba pang gadget ng mga manonood. Ang pinakamainam na mga format para sa iba't ibang mga aparato ay naiiba sa isa't isa.
Sa isang katulad na ugat, ang iba't ibang mga manonood ay maaaring gumamit ng iba't ibang mga bandwidth upang ma-access ang internet.
Ang ilang mga manonood ay maaaring makapag-stream ng mga pelikulang may mataas na resolution nang madali depende sa bilis ng kanilang koneksyon sa internet o bandwidth, habang ang mga may mas mababang bandwidth ay makakapag-stream ng mga video na may mababang kalidad nang mas madali.
Buksan ang Connect
Kapag ginamit mo ang iyong browser para humiling ng Netflix.com, talagang hihilingin sa iyong ISP (Internet Service Provider) na magtatag ng koneksyon sa pagitan ng iyong computer at ng Netflix server.
Nakikipag-ugnayan ang iyong ISP sa Netflix IP address sa ngalan mo at ibinabalik sa iyo ang resulta. Ang madla sa isang malayong bansa tulad ng Tokyo ay makakaranas ng makabuluhang pagkaantala sa pagpapadala at pagtanggap ng mga signal dahil sa konsentrasyon ng mga server na ito sa US.
Sa mga video, ang mga pagkaantala ay higit na isang alalahanin dahil maraming data ang dapat ipadala sa manonood, at kung oo, maaantala ang streaming at magdurusa ang karanasan ng user.
Gumagamit ang Netflix ng matalinong pamamaraan para ayusin ang isyu. Ito ay kilala bilang Open Connect (OC). Ang Open Connect ay ang CDN na ginagamit ng Netflix (Content Delivery Network).
Upang mai-cache ang online na impormasyon at maihatid ito nang mabilis sa mga consumer sa pamamagitan ng pagbabawas ng pisikal na distansya sa pagitan ng user at ng materyal, ang CDN ay isang network ng mga spread server at nauugnay na mga data center.
I-load ang Balancing
A solong aplikasyon hindi kayang pangasiwaan ng server ang dami ng mga kahilingan (kabilang ang pag-upload, paghahanap, at pagtingin sa mga kahilingan) na dumarating bawat segundo.
Dapat mayroong load balancer na nakalagay upang epektibong maipamahagi ang workload sa maraming server dahil may ilang server na kasangkot.
Gumagamit ang Netflix ng patuloy na pag-hash upang ipamahagi ang mga load sa mga server dahil maaari nitong pangasiwaan ang mga pagkabigo ng server at mapaunlakan ang pag-install ng mga karagdagang server nang madali.
Dahil nag-iiba-iba ang kasikatan ng bawat video, maaaring makaranas ng hindi pantay na pagkarga ang mga aktwal na server na nagho-host ng mga pelikulang ito. Gamit ang mga dynamic na pag-redirect ng HTTP, na nagpapahintulot sa isang abalang server na ilihis ang isang bagong kahilingan sa isang bukas na server, maaari naming ayusin ang problemang ito.
Mga Pagsasaalang-alang Kapag Bumubuo ng Application ng Video Streaming
Hanapin at Paunlarin ang Iyong Niche
Sa napakaraming iba't ibang uri ng materyal na magagamit, mula sa entertainment hanggang sa edukasyon hanggang sa fitness, mahalaga ang pagbuo ng differentiator na may espesyal na espesyalidad. Maaari kang lumikha ng isang platform para sa mga dokumentaryo o mga independiyenteng pelikula.
Ang Monetization ng Application
Ang pagkagambala sa mga tradisyonal na pattern ng monetization ay maaaring magresulta sa pagbabago at paglago. Ang mga plano ay dapat palaging iayon sa target na madla.
Dahil monopolyo na ng mga nanunungkulan ang merkado, maaari mong subukang pagkakitaan ang mga libreng membership gamit ang mga ad o paglalagay ng produkto.
Kasama nito, kung nais mong bumuo ng isang pandaigdigang platform ng serbisyo ng streaming, dapat mong isaalang-alang ang mga pangangailangan ng multi-currency.
Mas Mahusay na Karanasan
Ang pagganap ng programa ay dapat na pahusayin para sa mga sitwasyon tulad ng mabagal na internet o mga user na may pinaghihigpitang pag-access.
Pag-stream ng mga video
Hindi lamang nagbo-broadcast ang Netflix ng content, ngunit gumagamit din ito ng mga diskarte sa user-engineering at mga personalized na suhestyon para panatilihing nakakabit ang mga user sa serbisyo.
Magplanong magtatag ng streaming service na katulad ng Netflix na may diin sa data analytics at pag-customize ng user.
Pamamahala sa maraming tungkulin ng App
Sa Netflix app, ang view ng user ay isa lamang sa ilang tungkulin ng user. Kinakailangan ang pagpaplano para sa iba't ibang user at sa kanilang pag-access, kabilang ang administrator, may-ari ng video, mga kasosyo, mga moderator, atbp.
Konklusyon
Sa konklusyon, ito ay kung paano ang mga serbisyo ng video streaming tulad ng Netflix, YouTube, at iba pang onboard na mga video, mapanatili ang pagsubaybay sa mga ito at ipakita ang mga ito sa milyun-milyong mga consumer.
Bagama't ang bawat isa sa mga application na ito ay maaaring may ilang karagdagang mga tampok na nagbubukod sa kanila, ang pangunahing pag-andar ay batay sa parehong mga algorithm.
Ginawa ko ang aking makakaya upang bigyan ka ng pangkalahatang pangkalahatang-ideya ng arkitektura ng sistema ng serbisyo ng streaming, ngunit marami pang nangyayari sa background.
Ako ay tunay na umaasa na mahahanap mo ang kaalamang ito na mahalaga at gamitin ito.
Mag-iwan ng Sagot