如果您在網上度過了任何時間,那麼您很有可能已經流式傳輸了某些內容。
流媒體是互聯網上最著名的應用程序最常見的用途之一,無論是通過 YouTube、Spotify、Netflix 還是其他一百個應用程序。
但是,考慮到流媒體的普遍性,很容易將其視為理所當然。 例如:究竟什麼是流媒體?
任何通過互聯網發送到計算機和移動設備並實時播放的媒體材料,無論是直播的還是錄製的,都稱為流媒體。
常見的流媒體材料類型包括播客、網絡廣播、電影、電視節目和音樂視頻。
音樂、視頻和其他類型的媒體項目被規劃並以連續數據包的形式傳輸,因此它們可以立即進行流式傳輸。
一個合適的設備、對流媒體服務或應用程序的訪問以及快速、可靠的高速互聯網連接都是您進行流媒體播放所需要的。
注意:我們將使用視頻流服務作為示例。
這篇文章將深入探討流媒體服務的系統設計以及開發視頻流媒體應用程序時要考慮的關鍵因素。
系統要求
世界上最受歡迎的視頻流媒體服務包括 YouTube 和 Netflix。 為了改善用戶體驗,他們的架構包括許多元素。
這樣的服務包括流行電影、發票、基於人工智能的推薦系統和稍後觀看的功能,但我們將專注於基本要素。
核心素質
我們在我們的概念中包含了以下功能 視頻流 服務:
- 內容創作者可以發布視頻。
- 觀眾可以使用多種設備觀看視頻(手機、電視等)。
- 在視頻上,用戶可以評論、喜歡或不喜歡。
- 視頻的標題可用於搜索它們。
- 為了向用戶顯示這些統計數據,系統可以存儲視圖、喜歡和不喜歡。
系統目標
- 不應有任何緩衝,以便觀眾可以實時觀看視頻。
- 視頻存儲應該是可靠的。 您不應丟失已上傳的視頻。
- 隨著用戶的增加,系統應該是可擴展的。
- 低延遲和高可用性應該是系統的特性。 在這種情況下,一致性並不那麼重要,因為用戶可以等待一段時間才能看到新提交的電影。
單個服務器無法處理大量數據,因為系統必須定期管理強大的流量。 一組服務器將用於為系統提供服務。
即使一台服務器崩潰,客戶端也不應該有任何明顯的速度影響。
高級架構
視頻流程序可以接受三種不同類型的請求之一:
- 上傳(寫)
- 搜索(閱讀)
- 查看(閱讀)
由於讀取查詢(搜索和查看)的頻率通常是寫入請求(上傳)的數倍,因此它們中的每一個都由單獨的服務器集群處理。
由於該程序是讀取密集型程序,因此您需要設置比上傳更多的服務器來處理讀取請求。
客戶端發出的每個請求都被路由到適當的微服務 負載均衡器 收到時。
上傳服務
處理視頻、將其上傳到 Open Connect 服務器並使其可供所有用戶訪問的上傳服務滿足上傳請求。
搜索服務
負載均衡器將搜索請求發送到搜索微服務,然後將其發送到 Netflix 的 Elastic 搜索。 客戶端收到彈性搜索的答案。
Netflix 使用 Elastic Search 來搜索數百萬個視頻,這是一個可擴展性極強的全文開源搜索引擎。
Netflix 使用彈性搜索來分析客戶服務運營。
查看服務
大多數查看請求不會發送到負載均衡器或 Netflix 的服務器。 相反,用戶將連接到本地 ISP,並直接從最近的 Open Connect 服務器獲取數據。
但是,如果請求的視頻不可訪問,它將被發送到負載均衡器和視圖微服務。
然後在元數據數據庫中搜索視頻,從元數據中指定的路徑檢索視頻,並將其傳輸到客戶端。
當然,這種技術包括延遲,這就是為什麼實際上所有的視圖請求都是通過 Open Connect 提供的。
上載影片
YouTube 的主要目的是上傳電影或視頻。 視頻流服務必須克服許多障礙,才能讓消費者可以訪問視頻。
保持碎片化
每個提交的視頻將被分成許多較小的文件,而不是保存為一個大文件。
這是必不可少的,因為內容製作者能夠提交巨大的視頻。 單個大文件可能需要一段時間來處理或流式傳輸。
觀看者無需下載完整的視頻即可播放,如果它被保存並分段提供給他們。
為了保證chunk之間的延遲很小,並且用戶有一個流暢的觀看體驗,客戶端會先向服務器請求第一個chunk,然後在播放該chunk時請求下一個chunk。
處理隊列
每個視頻都有很多塊,Netflix 會同時使用多個工作人員來分析它們,因此需要一個處理隊列。 通過將它們添加到隊列中,這變得更簡單。
作業將由工作人員(或編碼器,我們將在接下來介紹)收集,編碼為各種格式,然後存儲在分佈式文件存儲中。
視頻編碼
以多種格式轉換和保存視頻塊至關重要,以便觀眾可以使用最適合他們的技術和互聯網連接訪問它們。
觀眾可以在筆記本電腦、手機、電視或其他小工具上觀看視頻。 各種設備的最佳格式各不相同。
同樣,不同的觀眾可以利用不同的帶寬訪問互聯網。
一些觀眾可以根據他們的互聯網連接速度或帶寬輕鬆流式傳輸高分辨率電影,而帶寬較小的觀眾將能夠更輕鬆地流式傳輸低質量視頻。
打開連接
當您使用瀏覽器請求 Netflix.com 時,您的 ISP(互聯網服務提供商)確實需要在您的計算機和 Netflix 服務器之間建立連接。
您的 ISP 代表您聯繫 Netflix IP 地址並將結果返回給您。 由於這些服務器集中在美國,像東京這樣的偏遠國家的觀眾將在傳輸和接收信號方面遇到重大延遲。
對於視頻,延遲更令人擔憂,因為必須將大量數據傳輸給觀看者,如果是這樣,流傳輸將被延遲並且用戶體驗將受到影響。
Netflix 利用一種巧妙的技術來解決這個問題。 它被稱為開放連接 (OC)。 Open Connect 是 Netflix 使用的 CDN(內容交付網絡)。
為了緩存在線信息並通過縮短用戶與材料之間的物理距離將其快速交付給消費者,CDN 是一個由分散的服務器和相關數據中心組成的網絡。
負載均衡
A 單一申請 服務器無法處理每秒到達的請求量(包括上傳、搜索和查看請求)。
由於涉及多台服務器,因此必須有一個負載平衡器來有效地將工作負載分佈在眾多服務器上。
Netflix 使用恆定散列在服務器之間分配負載,因為它可以處理服務器故障並輕鬆適應額外服務器的安裝。
由於每個視頻的受歡迎程度各不相同,因此託管這些電影的實際服務器可能會遇到不均等的負載。 使用動態 HTTP 重定向,它允許繁忙的服務器將新請求轉移到打開的服務器,我們可以解決這個問題。
開發視頻流應用程序時的注意事項
尋找和發展你的利基
有這麼多不同種類的可用材料,從娛樂到教育再到健身,建立具有專業特色的差異化因素至關重要。 您可以為紀錄片或獨立電影創建平台。
應用程序的貨幣化
顛覆傳統的貨幣化模式可以帶來創新和增長。 計劃應始終針對目標受眾量身定制。
由於老牌企業已經壟斷了市場,您可以嘗試通過廣告或產品植入來通過免費會員獲利。
與此同時,如果要構建一個全球流媒體服務平台,就必須考慮多幣種的需求。
更好的體驗
該程序的性能應針對邊緣情況(如互聯網速度慢或訪問受限的用戶)進行增強。
流媒體視頻
Netflix 不僅廣播內容,而且還使用用戶工程技術和個性化建議來讓用戶對服務著迷。
計劃建立類似於 Netflix 的流媒體服務,重點是數據分析和用戶定制。
管理應用程序的許多角色
在 Netflix App 中,用戶視圖只是多個用戶角色之一。 需要對各種用戶及其訪問權限進行規劃,包括管理員、視頻所有者、合作夥伴、版主等。
結論
總之,這就是 Netflix、YouTube 和其他車載視頻等視頻流服務如何跟踪它們並將它們展示給數百萬消費者的方式。
儘管這些應用程序中的每一個都可能具有一些使它們與眾不同的附加功能,但基本功能基於相同的算法。
我盡力為您提供流服務系統架構的總體概述,但在後台還有很多事情要做。
我真誠地希望您會發現這些知識很有價值並加以利用。
發表評論