当前位置: 首页 > news >正文

【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 映射:

  • describeChannelLws() @ src/source/Signaling/LwsApiCalls.c:798
  • getChannelEndpointLws() @ src/source/Signaling/LwsApiCalls.c:1039
  • createChannelLws() @ src/source/Signaling/LwsApiCalls.c:850

三、数据面 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 映射:

  • getIceConfigLws() @ src/source/Signaling/LwsApiCalls.c:1188
  • joinStorageSessionLws() @ src/source/Signaling/LwsApiCalls.c:1570
  • updateStorageSessionLws() @ src/source/Signaling/LwsApiCalls.c:1600

四、数据面 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 映射:

  • lwsWssCallbackRoutine() @ src/source/Signaling/LwsApiCalls.c:343
  • 发送模板 @ src/source/Signaling/LwsApiCalls.h:115-129

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

ClientControl PlaneData Plane RESTData Plane WebSocketC<DescribeSignalingChannelChannelARNGetSignalingChannelEndpointHTTPS+WSS endpointsGetIceServerConfig (HTTPS)TURN list + credentialsConnectAsMaster/Viewer (WSS)SDP_OFFER / SDP_ANSWER / ICE_CANDIDATEloop[Trickle]RECONNECT_ICE_SERVERGetIceServerConfigalt[credential expired]ClientControl PlaneData Plane RESTData Plane WebSocketC<

六、常见疑问解答

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

http://www.dtcms.com/a/609265.html

相关文章:

  • Git:进阶、衍生
  • 深度智能体的中间件
  • 中文分词全切分算法
  • 11月10日ES本机
  • 网络营销的基本职能医院seo是什么
  • PLB-TV 影视!无广告 + 4K 高清
  • 网站背景自动变色做简历比较好的网站
  • 播放PCM音频增益低+单独增强PCM解码的方案
  • C++篇(16)C++11(下)
  • 全新ZipArchives插件:可在ONLYOFFICE协作空间中解压ZIP文件
  • 【PRML】支持向量机
  • 龙岩网站建设哪里比较好长春网站排名优化公司
  • 服务器建设网站软件下载南京站建设
  • 重组融合蛋白技术概述
  • Java_自定义泛型类/接口/方法
  • EG2106 高端电压600V 半桥MOS管栅极驱动芯片技术解析
  • 上位机开发之JSON文件编辑器(动态UI)
  • Git 本地操作入门:版本控制基础、跨平台部署与仓库核心流程
  • Docker 缓存优化:通过 cpolar 内网穿透服务远程管理 Redis
  • 微算法科技(NASDAQ MLGO)在委托权益证明DPoS主链上引入PoW轻节点验证,提升抗量子攻击能力
  • 前缀和与差分数组
  • 微官网和移动网站区别网站设计行业前景
  • dw网站的站点建设阿里巴巴网站图片怎么做
  • 智慧判官-分布式编程评测平台
  • 基于 HT 技术的汽车制造车间数字孪生可视化系统
  • TOMCAT Docker 容器化部署指南
  • 自己做网站去哪买服务器天猫网站设计
  • React Native 自定义 ScrollView 滚动条:开箱即用的 IndicatorScrollView(附源码示例)
  • Java Web核心数据交互技术全解析
  • UML建模工具Enterprise Architect在DevOps中如何实现架构模型同步