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