作者:陈腾 章继虎,单位:中国移动智慧家庭运营中心
随着智慧家庭IoT市场高速增长,越来越多的智能设备被普通家庭所接受,其中在家庭存储领域,传统的NAS一直因为价格相对其他智能设备更昂贵,配置复杂,导致使用的入门门槛较高,因此还未被普通家庭所广泛接受。随着智能手机的发展,存储越来越大,相机越来越好,普通家庭也存在着各式各样的媒体存储需求。本文基于WebRTC技术,探索了一种将智能家庭设备如智能电视、机顶盒、路由器甚至是个人电脑,赋予一种可进行快速连接访问的存储能力,使这些设备变成一个临时NAS,可通过手机、平板与设备建立P2P连接,完成对各类资源进行操作管理。
WebRTC技术简述
WebRTC(Web Real-Time Communication)是一种开放性的实时通信技术,旨在使浏览器和移动应用能够通过简单的JavaScript API实现实时音频、视频和数据传输,而无需安装插件或额外的软件。它在网络应用中支持点对点通信,例如视频聊天、语音通话、文件共享和实时数据传输等。
WebRTC的主要组成部分包括:
1.媒体捕获和处理:WebRTC提供了访问用户设备的摄像头和麦克风的API,以及对音视频流进行处理和编解码的能力。这使得开发者可以从浏览器中获取实时的音视频数据。RTCPeerConnection:这是WebRTC的核心部分,用于建立和管理点对点连接。它允许浏览器之间直接交换音视频流和任何其他数据。RTCPeerConnection使用NAT穿透和ICE(Interactive Connectivity Establishment)等技术来解决网络环境中的连接问题。
2.RTCDataChannel:除了音视频通信,WebRTC还支持用于传输任意数据的数据通道。这对于在应用程序之间传递消息、文件或其他信息非常有用。
3.信令:WebRTC并不负责处理通信双方的初始化和连接建立过程,这些任务被称为信令。开发者需要使用其他技术来实现信令,以确保通信双方知道对方的存在并能够建立连接。
4.STUN和TURN服务器:在点对点通信中,存在许多网络配置问题,如防火墙和NAT。STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)服务器用于解决这些问题,以确保连接的建立和维护。
WebRTC技术的优势包括:
1.实时性:WebRTC允许实时的音视频通信和数据传输,非常适用于视频聊天、在线会议和实时协作等场景。
2.开放性:WebRTC是开放标准,可在支持该技术的浏览器和应用中使用,不需要额外的插件。
3.跨平台:WebRTC可在不同的操作系统和设备上工作,包括桌面、移动设备和嵌入式系统。
4.WebRTC在许多实时通信场景中得到了广泛应用,包括视频会议、在线教育、远程医疗、在线游戏和社交媒体。
智能设备轻量存储能力扩展技术方案
(一)应用场景
在家庭场景中,机顶盒、智能电视、带屏音箱自身具备一定的存储空间,一般都可通过USB协议扩展本地存储,也可通过NFS等协议进行扩展,这使得这些设备具备成为一个家庭存储中心的可能;通过本方案,可实现手机、平板等媒体数据快速传输后,可在带屏设备上进行浏览管理。
(二)实现形态
整个架构包含:发起请求的控制端、实现轻量存储化的设备端、云端的穿透服务和信息令控制服务及相关业务服务;
控制端实现:载体可以是移动端的手机、平板电脑,也可以是个人电脑;实现形态可以是只保留核心功能的H5页面实现,也可以是具备更全面功能的具备轻量存储扩展能力SDK移动端APP。
设备端实现:理论上只要是支持文件系统,并且存储空间可拓展的设备都具备该扩展能力,但是从实际使用场景来说,机顶盒、智能电视、带屏音箱、路由器这几类设备更具有存储扩展能力的价值。
云端实现:要保证点对点通信的实现,云端需要搭建一套基于ICE框架实现的STUN和TURN协议服务集群来解决内网穿透的问题,以提供数据传输时的高效体验。
(三)流程概述
操作端生成offer sdp,通过信令服务发送到设备端,主要用于协商媒体格式。
设备端收到发起方的sdp,结合自己可以使用的媒体格式生成一个answer sdp回复到发起方,至此双方已经沟通好将要使用的媒体数据格式。
双方开始检测自己可以用于收发数据的地址(IP,端口,协议等),把检测到的可用地址通过信令服务发送到对端。
当收到对方发过来的candidate后,把candidate分别组成 candidate-pair(相同协议,可以用于通讯的两端地址),并对candidate-pair进行连通性测试,把可以连通的candidate-pair作为数据收发地址。
candidate-pair确认后,可通过RTCDataChannel进行数据传输,比如控制端将本地的文件上传至设备端;在打洞成功的前提下,端到端的传输效率可以得到较好的保证。
结语
综上所述,本文探讨了一种利用WebRTC技术对家庭常用智能设备拓展扩展存储能力的可能性,利用WebRTC的跨平台、实时性以及开放性的特性,实现一套可快速集成轻量实现的完整解决方案。实际除应用在家庭场景外,针对云电脑及云商铺的使用场景下,对设备存储扩展的需求都可以进行一定程度上的补充。
此外,针对原生WebRTC在传输安全性上只有DTLS的支持,相对安全性较弱的情况,还可结合智慧家庭运营中心推出的“一机一密”设备认证技术,通过植入“一机一密”密钥对两端设备的通信加密和设备认证做进一步的安全强化。
各种数据源通过Kafka接入到数据平台层,数据平台讲明细数据存入数据存储层的ClickHouse中,明细数据的存活时间可以根据业务需求设置。同时可以根据业务报表查询的不同维度,利用ClickHouse的物化视图形成预聚合数据,提高数据查询效率。由数据服务层的定时任务周期性地从ClickHouse的预聚合数据中查询业务所需的展示数据,把展示数据存入MySQL。由数据服务层的报表服务向数据展示层提供查询服务,报表服务直接查询MySQL中的结果数据,保证了查询效率和并发性。