作者:陳騰 章繼虎,單位:中國移動智慧家庭運營中心
隨著智慧家庭IoT市場高速增長,越來越多的智能設(shè)備被普通家庭所接受,其中在家庭存儲領(lǐng)域,傳統(tǒng)的NAS一直因為價格相對其他智能設(shè)備更昂貴,配置復(fù)雜,導(dǎo)致使用的入門門檻較高,因此還未被普通家庭所廣泛接受。隨著智能手機(jī)的發(fā)展,存儲越來越大,相機(jī)越來越好,普通家庭也存在著各式各樣的媒體存儲需求。本文基于WebRTC技術(shù),探索了一種將智能家庭設(shè)備如智能電視、機(jī)頂盒、路由器甚至是個人電腦,賦予一種可進(jìn)行快速連接訪問的存儲能力,使這些設(shè)備變成一個臨時NAS,可通過手機(jī)、平板與設(shè)備建立P2P連接,完成對各類資源進(jìn)行操作管理。
?WebRTC技術(shù)簡述
WebRTC(Web Real-Time Communication)是一種開放性的實時通信技術(shù),旨在使瀏覽器和移動應(yīng)用能夠通過簡單的JavaScript API實現(xiàn)實時音頻、視頻和數(shù)據(jù)傳輸,而無需安裝插件或額外的軟件。它在網(wǎng)絡(luò)應(yīng)用中支持點對點通信,例如視頻聊天、語音通話、文件共享和實時數(shù)據(jù)傳輸?shù)取?/p>
WebRTC的主要組成部分包括:
1.媒體捕獲和處理:WebRTC提供了訪問用戶設(shè)備的攝像頭和麥克風(fēng)的API,以及對音視頻流進(jìn)行處理和編解碼的能力。這使得開發(fā)者可以從瀏覽器中獲取實時的音視頻數(shù)據(jù)。RTCPeerConnection:這是WebRTC的核心部分,用于建立和管理點對點連接。它允許瀏覽器之間直接交換音視頻流和任何其他數(shù)據(jù)。RTCPeerConnection使用NAT穿透和ICE(Interactive Connectivity Establishment)等技術(shù)來解決網(wǎng)絡(luò)環(huán)境中的連接問題。
2.RTCDataChannel:除了音視頻通信,WebRTC還支持用于傳輸任意數(shù)據(jù)的數(shù)據(jù)通道。這對于在應(yīng)用程序之間傳遞消息、文件或其他信息非常有用。
3.信令:WebRTC并不負(fù)責(zé)處理通信雙方的初始化和連接建立過程,這些任務(wù)被稱為信令。開發(fā)者需要使用其他技術(shù)來實現(xiàn)信令,以確保通信雙方知道對方的存在并能夠建立連接。
4.STUN和TURN服務(wù)器:在點對點通信中,存在許多網(wǎng)絡(luò)配置問題,如防火墻和NAT。STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)服務(wù)器用于解決這些問題,以確保連接的建立和維護(hù)。
WebRTC技術(shù)的優(yōu)勢包括:
1.實時性:WebRTC允許實時的音視頻通信和數(shù)據(jù)傳輸,非常適用于視頻聊天、在線會議和實時協(xié)作等場景。
2.開放性:WebRTC是開放標(biāo)準(zhǔn),可在支持該技術(shù)的瀏覽器和應(yīng)用中使用,不需要額外的插件。
3.跨平臺:WebRTC可在不同的操作系統(tǒng)和設(shè)備上工作,包括桌面、移動設(shè)備和嵌入式系統(tǒng)。
4.WebRTC在許多實時通信場景中得到了廣泛應(yīng)用,包括視頻會議、在線教育、遠(yuǎn)程醫(yī)療、在線游戲和社交媒體。
智能設(shè)備輕量存儲能力擴(kuò)展技術(shù)方案
(一)應(yīng)用場景
在家庭場景中,機(jī)頂盒、智能電視、帶屏音箱自身具備一定的存儲空間,一般都可通過USB協(xié)議擴(kuò)展本地存儲,也可通過NFS等協(xié)議進(jìn)行擴(kuò)展,這使得這些設(shè)備具備成為一個家庭存儲中心的可能;通過本方案,可實現(xiàn)手機(jī)、平板等媒體數(shù)據(jù)快速傳輸后,可在帶屏設(shè)備上進(jìn)行瀏覽管理。
(二)實現(xiàn)形態(tài)
整個架構(gòu)包含:發(fā)起請求的控制端、實現(xiàn)輕量存儲化的設(shè)備端、云端的穿透服務(wù)和信息令控制服務(wù)及相關(guān)業(yè)務(wù)服務(wù);
控制端實現(xiàn):載體可以是移動端的手機(jī)、平板電腦,也可以是個人電腦;實現(xiàn)形態(tài)可以是只保留核心功能的H5頁面實現(xiàn),也可以是具備更全面功能的具備輕量存儲擴(kuò)展能力SDK移動端APP。
設(shè)備端實現(xiàn):理論上只要是支持文件系統(tǒng),并且存儲空間可拓展的設(shè)備都具備該擴(kuò)展能力,但是從實際使用場景來說,機(jī)頂盒、智能電視、帶屏音箱、路由器這幾類設(shè)備更具有存儲擴(kuò)展能力的價值。
云端實現(xiàn):要保證點對點通信的實現(xiàn),云端需要搭建一套基于ICE框架實現(xiàn)的STUN和TURN協(xié)議服務(wù)集群來解決內(nèi)網(wǎng)穿透的問題,以提供數(shù)據(jù)傳輸時的高效體驗。
(三)流程概述
操作端生成offer sdp,通過信令服務(wù)發(fā)送到設(shè)備端,主要用于協(xié)商媒體格式。
設(shè)備端收到發(fā)起方的sdp,結(jié)合自己可以使用的媒體格式生成一個answer sdp回復(fù)到發(fā)起方,至此雙方已經(jīng)溝通好將要使用的媒體數(shù)據(jù)格式。
雙方開始檢測自己可以用于收發(fā)數(shù)據(jù)的地址(IP,端口,協(xié)議等),把檢測到的可用地址通過信令服務(wù)發(fā)送到對端。
當(dāng)收到對方發(fā)過來的candidate后,把candidate分別組成 candidate-pair(相同協(xié)議,可以用于通訊的兩端地址),并對candidate-pair進(jìn)行連通性測試,把可以連通的candidate-pair作為數(shù)據(jù)收發(fā)地址。
candidate-pair確認(rèn)后,可通過RTCDataChannel進(jìn)行數(shù)據(jù)傳輸,比如控制端將本地的文件上傳至設(shè)備端;在打洞成功的前提下,端到端的傳輸效率可以得到較好的保證。
結(jié)語
綜上所述,本文探討了一種利用WebRTC技術(shù)對家庭常用智能設(shè)備拓展擴(kuò)展存儲能力的可能性,利用WebRTC的跨平臺、實時性以及開放性的特性,實現(xiàn)一套可快速集成輕量實現(xiàn)的完整解決方案。實際除應(yīng)用在家庭場景外,針對云電腦及云商鋪的使用場景下,對設(shè)備存儲擴(kuò)展的需求都可以進(jìn)行一定程度上的補(bǔ)充。
此外,針對原生WebRTC在傳輸安全性上只有DTLS的支持,相對安全性較弱的情況,還可結(jié)合智慧家庭運營中心推出的“一機(jī)一密”設(shè)備認(rèn)證技術(shù),通過植入“一機(jī)一密”密鑰對兩端設(shè)備的通信加密和設(shè)備認(rèn)證做進(jìn)一步的安全強(qiáng)化。
各種數(shù)據(jù)源通過Kafka接入到數(shù)據(jù)平臺層,數(shù)據(jù)平臺講明細(xì)數(shù)據(jù)存入數(shù)據(jù)存儲層的ClickHouse中,明細(xì)數(shù)據(jù)的存活時間可以根據(jù)業(yè)務(wù)需求設(shè)置。同時可以根據(jù)業(yè)務(wù)報表查詢的不同維度,利用ClickHouse的物化視圖形成預(yù)聚合數(shù)據(jù),提高數(shù)據(jù)查詢效率。由數(shù)據(jù)服務(wù)層的定時任務(wù)周期性地從ClickHouse的預(yù)聚合數(shù)據(jù)中查詢業(yè)務(wù)所需的展示數(shù)據(jù),把展示數(shù)據(jù)存入MySQL。由數(shù)據(jù)服務(wù)層的報表服務(wù)向數(shù)據(jù)展示層提供查詢服務(wù),報表服務(wù)直接查詢MySQL中的結(jié)果數(shù)據(jù),保證了查詢效率和并發(fā)性。