【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 负责"房间里实时对话";三层正交 → 安全、弹性、可运维全部兼得,表面"多两步"实为"长期最简路径"。

相关推荐
curd_boy13 分钟前
IM 顶层设计
websocket·架构·信息与通信
CesareCheung24 分钟前
用python写一个websocket接口,并用jmeter压测websocket接口
python·websocket·jmeter
weixin_472183541 小时前
微信小程序使用websocket
websocket·微信小程序·小程序
是店小二呀2 小时前
本地 Websocket 调试总碰壁?cpolar一招让远程访问变简单
网络·websocket·网络协议
TTc_5 小时前
详细讲解Vue+Java的websocket通讯,整合进微服务,XXL Job调用通讯流程
websocket·网络协议·微服务
刘孬孬沉迷学习1 天前
SCTP、GTP-U 和 WebSocket 协议比较
网络·websocket·网络协议
火星数据-Tina1 天前
体彩数据API
前端·websocket
三十_1 天前
WebRTC 入门:一分钟理解一对多直播的完整实现流程
webrtc
渡我白衣1 天前
多路转接模型与select
人工智能·深度学习·websocket·网络协议·机器学习·网络安全·信息与通信
沧澜sincerely1 天前
Spring Boot 后端实现 WebSocket
spring boot·后端·websocket