【ZeroRange WebRTC】Kinesis Video Streams WebRTC 三大平面职责与协同关系总结

Kinesis Video Streams WebRTC 三大平面职责与协同关系总结

基于 amazon-kinesis-video-streams-webrtc-sdk-c-main 源码与 AWS 官方文档


一、为什么必须拆成三个平面?

维度 控制面(Control Plane) 数据面 REST(Data Plane REST) 数据面 WebSocket(Data Plane WebSocket)
流量特征 低频、可缓存、幂等 中频、短连接、幂等 高频、长连接、有状态
主要数据 通道元数据、终端发现 短期凭证、网络配置 实时 SDP/ICE 消息
故障半径 影响"新建通道" 影响"获取配置" 仅影响"当前会话"
扩缩粒度 Region 级 Cell(细胞)级 Cell + 连接级
安全模型 SigV4 + IAM 管理事件 SigV4 + IAM 数据事件 预签名 URL + 连接级

拆开后:

  • 各平面可 独立发布、限流、扩容、故障演练
  • 权限最小化 + 审计隔离;
  • 避免"拿配置 → 建会话 → 再拿配置"的循环依赖;
  • 首联通成功率更高(首轮 SDP 即含 TURN)。

二、控制面职责清单

  1. 资源生命周期
    • CreateSignalingChannel / DeleteSignalingChannel
    • UpdateSignalingChannel(存储配置、标签)
  2. 发现与路由
    • DescribeSignalingChannel → 拿 ARN、版本、创建时间
    • GetSignalingChannelEndpoint → 返回数据面终端(HTTPS/WSS/WEBRTC)
  3. 枚举与审计
    • ListSignalingChannels(支持前缀过滤)
  4. 配额与限流
    • 默认 5--20 TPS/Region;可独立提升
  5. 缓存友好
    • Describe 结果可客户端缓存 5 min;Endpoint 列表变化频率 < 1 h

SDK 映射:


三、数据面 REST 职责清单

  1. 短期网络配置下发
    • GetIceServerConfig → 返回 24 h 有效期 TURN 用户名/密码/Uris
    • 支持 UDP/TCP/TLS 多接入点,按客户端网络自动选优
  2. 存储会话管理(可选)
    • JoinStorageSession → Master 申请录制会话 ARN
    • UpdateStorageSession → 修改 MediaType/Retention 等
  3. 安全与合规
    • 密码基于 AWS 签名密钥派生,不落地长期 AK/SK
    • 支持 X-Amz-Security-Token 临时凭证
  4. 幂等与缓存
    • 相同 ChannelARN+ClientId 重复调用返回一致结果
    • 客户端可在 Ttl-30 s 内缓存,减少 90% 调用
  5. 配额与退避
    • 默认 20 TPS(GetIceServerConfig)/ 5 TPS(存储类)
    • 指数退避:100 ms → 30 s,时钟偏差 > 5 min 自动校正

SDK 映射:


四、数据面 WebSocket 职责清单

  1. 实时信令交换
    • SDP_OFFER / SDP_ANSWER → 一次会话各一次
    • ICE_CANDIDATE → Trickle,0~N 条,秒级频率
  2. 连接生命周期
    • ConnectAsMaster / ConnectAsViewer → 预签名 URL 建连
    • 单通道 1 Master + N Viewer(默认 10,可调)
  3. 控制信令
    • GO_AWAY → 服务端维护,强制客户端重连
    • RECONNECT_ICE_SERVER → 凭证过期,触发客户端重新 GetIceServerConfig
  4. 保活与重连
    • 默认 30 s Ping/Pong;空闲 60 s 服务端主动断连
    • SDK 指数退避重连:100 ms → 30 s,支持网络切换/细胞故障迁移
  5. 消息约束
    • 单条 ≤ 10 KiB(Base64 后)
    • 支持 CorrelationId 同步等待 STATUS_RESPONSE

SDK 映射:


五、协同时序(再次浓缩)

Client Control Plane Data Plane REST Data Plane WebSocket C< DescribeSignalingChannel ChannelARN GetSignalingChannelEndpoint HTTPS+WSS endpoints GetIceServerConfig (HTTPS) TURN list + credentials ConnectAsMaster/Viewer (WSS) SDP_OFFER / SDP_ANSWER / ICE_CANDIDATE loop [Trickle] RECONNECT_ICE_SERVER GetIceServerConfig alt [credential expired] Client Control Plane Data Plane REST Data Plane WebSocket C<


六、常见疑问解答

  1. "多两次 HTTPS 会不会太慢?"

    • Describe 可缓存 5 min;GetIceServerConfig 可缓存到 Ttl-30 s;实际额外 RTT < 1% 会话时间。
  2. "为什么不能把 TURN 密码放在 WebSocket 第一条消息?"

    • 建 WebSocket 前不知 TURN,对称 NAT 下首连失败率 > 15%;
    • 消息体积易超 10 KB;需改 WSS 协议,兼容性难。
  3. "控制面返回 503 会影响已建会话吗?"

    • 不影响。已建 WebSocket 与媒体流走 Data Plane,与控制面解耦。
  4. "细胞故障时如何迁移?"

    • GetIceServerConfig 会返回多组 TURN Uris(不同细胞);
    • WebSocket 重连时 SDK 随机选端点,自动避开故障细胞。

七、一句话总结

控制面 帮你"找到房间并拿到钥匙",数据面 REST 给你"一次性门禁卡",数据面 WebSocket 负责"房间里实时对话";三层正交 → 安全、弹性、可运维全部兼得,表面"多两步"实为"长期最简路径"。

相关推荐
2501_921649491 天前
日本股票 API 对接,接入东京证券交易所(TSE)实现 K 线 MACD 指标
大数据·人工智能·python·websocket·金融
web前端进阶者2 天前
webRTC指定设备加自定义用户头像
音视频·webrtc
kkk_皮蛋2 天前
WebRTC 视频编码基础 (VP8/VP9/H.264/AV1)
音视频·webrtc·vp8
Lily.C2 天前
小程序WebSocket实时通信全解析
websocket·网络协议·小程序
2501_921649492 天前
股票 API 对接, 接入德国法兰克福交易所(FWB/Xetra)实现量化分析
后端·python·websocket·金融·区块链
CryptoRzz2 天前
墨西哥股票数据 API 对接实战指南(含实时行情与 IPO 功能)
java·后端·websocket·区块链
Smile_2542204183 天前
vlc的使用
网络·webrtc·实时音视频
chalmers_153 天前
将单个 WebSocket 客户端封装为实例
服务器·websocket·网络协议
chalmers_153 天前
基于该 WebSocket 脚本开展专业的压力测试
服务器·websocket·压力测试
JackJiang4 天前
AI大模型爆火的SSE技术到底是什么?万字长文,一篇读懂SSE!
前端·websocket