本文主要介紹webrtc p2p的應用場景,文章來自博客園RTC.Blacker,支持原創,轉載請說明出處。
P2P最簡單的解釋就是兩個客戶端之間直接進行數據交互,不經過服務端轉發.
最早接觸P2P是在大學里,那年代硬件和網絡帶寬都很昂貴(512內存已經是很高檔的配置,在線直播是不敢想像的),
所以QQ這些應用軟件為了節省服務端資源,文本聊天都是直接P2P的,那時候BT這些軟件很受歡迎,因為他不是從服務端去下載資源,
而是直接去相鄰的機器里獲取,所以下載速度很快,當然帶來的問題就是客戶端網絡負載很大,所以很多地方會禁用BT。
現在硬件成本和帶寬成本大大降低,所以很多即時通訊軟件的消息都是通過服務端進行轉發,而且是基於TCP,
既降低了開發難度,又帶來了很好的便捷與擴展,比如你現在通過QQ或微信聊天的內容都會存儲在騰訊的服務端上,
當然絕大部分情況下他們不會去查聊天記錄,但是如果有人作奸犯科,是很容易被查處出來的。
因為QQ的聊天記錄都是存儲在騰訊的服務端,對一些大企業來說很不方便,一方面他們的內網與外面是隔開的,
另一方面他們不希望內部聊天記錄放在別人的服務器上,所以很多企業都有自己的IM,比如微軟的lync。
看到這里你是不是覺得p2p已經沒有太大用途了,全部都通過服務端來轉發就可以了,答案是No,看下圖:
這是win10的升級配置項,說明了兩個問題:
1、如果你的電腦升級到win10,你的電腦從別人那里下載升級包的同時,也作為主機給別人提供升級包的下載,所以從升級開始,
你的網速就會變慢,因為你要提供東西給別人下載,聽到這里你是不是不太想升級了。
2、微軟這么做也是迫於無奈,操作系統十多G的東西,每個人都連他們的服務端去下載,速度慢不說,另一個就是他們得部署很多服務端,
即使服務端部署好了,后期的帶寬成本也是一筆很大的支出,所以說有時候有錢也不能任性(如果不相信請接着看下面的分析)。
從網上看視頻直播的時候我們會發現有時候會延誤很多,比如看NBA,別人家已經進球了我們這邊才剛發球,
看世界杯,別人家已經歡呼好久了,我們這邊還沒射門,知道延遲為什么會那么大嗎?原因有兩個:
1、現在的直播基本上都是采用Adobe的RTMP協議,他是基於TCP的,所以2秒內延遲是很正常的,所以視頻會議都會采用UDP。
2、為了節省帶寬成本,視頻運營商會采用P2P技術,也就是說不管你看的是點播還是直播,你的視頻媒體流可能是來自於你附近的用戶,
而不是直接來自視頻廠商的服務端,他們要這么做也是沒辦法,因為他們的帶寬成本也很高,下面是樂視的財務報告:
看完上圖我們可以得出如下結論:
1、換成任何人來做微軟CEO,win10的升級方案都會優先P2P,而且默認就是P2P.
2、多媒體行業除了同行競爭激烈外,內容采購、帶寬、人工都是很大的支出,說到底這行業就是燒錢的,難怪優酷和土豆會合並(都撐得很難受),
插個“廣告”——既然blacker已經幫你分析這么多了,下次通過搜狐、優酷、樂視、騰訊等客戶端看視頻的時候可以考慮辦個會員,大家都不容易,
另外需要轉載我這些原創作品的時候,請說明出處,blacker也不容易,呵呵。
再回到webrtc,因為P2P是個好東西,webrtc里面又有p2p模塊,所以很多人希望直接用webrtc p2p,怎么用呢? 下面這個鏈接里面又有多例子:
1、p2p文本發送:http://webrtc.github.io/samples/src/content/datachannel/basic/
2、p2p文件發送:http://webrtc.github.io/samples/src/content/datachannel/filetransfer/
3、p2p數據發送:http://webrtc.github.io/samples/src/content/datachannel/datatransfer/