串流的應用在網路服務上,一直是很重要的一環。從音訊的串流到視訊的串流,衍生出許多網路上重要的應用。
各式網路串流應用相當普及,它們已經是在目前的IT環境中,不可或缺的服務
舉個例子來說吧,網路電話就是音訊串流的一種強大的應用。
傳統的電信電話,都是透過特定的線路,而基於IP網路的網路電話,卻是完全的建構在網際網路的基礎之上。通路的兩個端點,只要能夠連上網,並且具備足夠的頻寬,就能夠傳輸聲音的內容,彼此互相通路。
網路電話基於網路的最大優點之一是費用,倘若上網費用夠低,尤其是固接的網路費用,幾乎都和連線時數無關,這種情況下,即使講再久的電話,仍舊只需要支付網路費用。而過去國際電話的高昂費用,也可以透過網路電話的應用而降低許多。像Line之類的通訊軟體,都內建了語音通路的功能,這使得我們即使出國後,要和家人通話,相關的溝通費用也很低廉。
音訊串流的網路應用另一個代表性的例子,就是網路廣播電臺。
和傳統的廣播電臺利用AM/FM的訊號來廣播音訊不同,網路廣播電臺透過網際網路將廣播的內容傳送到收聽端,收聽的範圍可以遍及全球任何連上網路的地方,不像AM/FM受到電波發送範圍的地理限制,真正的實現了無遠弗屆。
除了音訊串流的應用之外,基於網路的視訊串流應用也愈來愈發達,不僅像傳統的直播電視頻道,也都跨進了網路的領域,利用網路來傳送其節目內容,一些像是YouTube的視頻網路,也早就成了網路使用者高度使用的應用。Netflix之類的業者,更直接提供線上訂閱影片並觀看的服務,大大地便利消費者在視聽上面的享受。
而且,在網路上經營串流的服務,有一些吸引人的優點,像是初始成本比較低、以及服務範圍可廣布全球、……等等。
更重要的是,它更有潛力發展出新穎的應用,因為透過電腦軟體系統,可以在收聽或收看端創造出許多的變化。
舉例來說,網路視頻應用的收看端,可以是電腦、手持裝置,也可以是機上盒、甚至是連網的智慧型電視,在這些平臺上,都可以運行軟體,並且和雲端上的系統交互作用,有了這樣的基礎條件,可以創造出許多的可能,像是更精準的廣告投放,可以經由對收視習慣、收視地點等等分析來做到。也因此,現在,有不少人積極的投入網路串流服務的領域。
回顧過去,網路串流服務的架構演進至今的歷程
若從技術的觀點來看網路串流服務的架構,我們可以從歷史的發展看到一些有趣的事情。
在多年前,最早的網路串流服務都是以集中式的架構為主的。在集中式的架構下,所有的內容都置放集中式的伺服器或同一機房裡的多部伺服器中,所有的客戶端都透過一定的串流通訊協定,連線到伺服器端。伺服器透過串流通訊協定,和客戶端溝通,並且將內容傳輸至客戶端。
串流通訊協定可能要負責認證,並且視頻寬條件,來協商雙方傳輸的品質、傳輸當前的節目表,以及最重要的──傳輸視訊、音訊,甚至是其他的文字內容。
在那個Windows平臺還主導消費者端的時代裡,最受歡迎的串流通訊協定之一,就是微軟的MMS(Microsoft Media Server Protocol)。因為,倘若使用這個協定,就可以輕易在微軟的客戶端平臺上播放視訊或音訊內容。除了MMS之外,RTSP(Real Time Streaming Protocol)也是很常見到的串流通訊協定。
不過,正如你所知的,集中化的架構不容易擴展規模。
要在集中式的架構下,提供串流服務,最大的瓶頸可能還不會發生在機器的運算能力,而是在網路頻寬。
對於頻寬耗用較小的音訊串流服務,像是網路廣播電臺服務來說,一個線上使用者可能就會耗去 128Kbps,一千個線上使用者就需要 128Mbps以上的頻寬,才足以提供其服務。你可以想像,在那個頻寬價如黃金的年代,頻寬不僅昂貴,而且,單一機房要提供服務所需的頻寬,也很不容易。音訊服務如此,就更別提想要提供視訊的服務了。
因此,開始有人把腦筋動到當時開始流行的點對點(Peer-to-Peer,P2P)架構了。在P2P的架構下,流量不會過度集中在伺服器端,而是由所有參與的Peer共同貢獻、提供。因此,服務端並不需要租用巨量的頻寬,才足以支持營運。所有的Peer都各自擁有部份的檔案內容,也都能透過自身所擁有的頻寬,再提供給其他的Peer。
雖然P2P的應用開始風行,是因為檔案交換下載的應用,但是,之後,人們開始試著把它用在即時性遠高於檔案交換下載的影音串流應用之上。最成功的例子,莫過於中國所發展的一些服務,像是PPS或是PPLive等。
在中國的這些影音串流服務,透過P2P技術,足以服務使用規模驚人的中國地區。但即使P2P的架構能夠降低伺服器端對於頻寬的需求,卻有著較難維持服務品質的缺點。因為所倚賴的Peer本身也是客戶端,而客戶端不論是在開機時間、頻寬品質等等的資源,都比不上伺服器端所能提供的來得穩定。
CDN的應用方式崛起,許多大型網站也紛紛跟進採用
隨著網路基礎設施發展的規模愈來愈強大,再加上雲端平臺的建立,多年前昂貴的頻寬成本也大幅的降低,將串流服務所需的頻寬移往伺服器端的風潮再現。
但是,和完全集中在單一機房中伺服器機群的架構有所不同的是,後來,人們開始利用所謂「內容遞送網路(Content Delivery Network,CDN)來傳送串流的內容。
何謂CDN?簡單來說,就是在多個地點建立節點,這些節點大多扮演著快取伺服器的作用,當客戶端需要索取某一份檔案的內容時,CDN的機制會依據該客戶端的所在位置,將它分配到離它最近的快取伺服器。
基本上,這樣的網路傳輸架構,有點像是一個群播(multicast)的架構,擁有原始內容的伺服器是群播樹的根節點,該伺服器把內容再傳送至子節點,即快取伺服器,而快取伺服器再將內容提供給客戶端,也就是整棵樹的葉節點。
而這麼做,有一些好處。首先,客戶端可以就近連上最近的快取伺服器,這可以加快取得檔案的速度,更重要的是,這麼一來,流量便不會集中在單一機房,而是被分散到各地的快取伺服器,這讓大規模的服務成為可能,因為單一節點的頻寬不再成為限制的條件。
在現今,利用CDN來提供串流服務已成主流,而在CDN的架構之上,還有一個息息相關的串流技術,即Apple所提出的HLS(HTTP Live Streaming)通訊協定。即使HLS尚未成為IETF的標準,但它儼然是個在業界流通的「準」標準了。而CDN和HLS在技術上又有一些搭配之處,這使得二者的組合在目前成為主流。
在下一回裡,我將繼續介紹CDN和HLS在串流技術上的特性,以及現況。
專欄作者
熱門新聞
2024-11-05
2024-11-05
2024-11-07
2024-11-04
2024-11-02
2024-11-02