系统架构 #

服务架构 #

  • UPRTC服务包含,Http服务提供API接口,WebSocket服务提供多平台客户端之间的信令传递,RTC服务提供客户端之前的媒体流转发。
  • RTC服务使用C++多进程架构,能够保证媒体流的实时性,更高的性能,以及充分利用服务器的每个CPU核心。
  • 架构支持服务器集群部署,跨机房多集群部署。





负载架构 #

会话房间 #

以用户为负载单位,也可以理解为传统视频会议中”路“的概念,当用户加入到房间后都会被分配到集群内负载最小的服务器。


直播房间 #

随着观众的增加房间会自动向当前负载最小的服务工作进程扩展。

  • 横向负载,可使用同服务器其他RTC工作进程负载。服务器RTC工作进程数默认为CPU核心数。
  • 纵向负载,可向其他服务器负载,在其他服务器的镜像房间也可以横向负载,镜像房间整体呈树型结构,参照负载树
  • 跨集群负载,可向其他集群负载,在其他集群的根镜像房间有着和房间本体一样的负载树

说明 #

直播房间A,创建了他的镜像房间B,表示A会把流推B,观众有可能和A连接也有可能和B连接。参照负载树配置,当defaultLoadSubNode为2时,A房间还能创建一个镜像房间C,这时A有B和C两个镜像节点,如果还需要增加负载,A的子节点数不能超过defaultLoadSubNode,所以由B房间创建它的镜像房间D,表示B把流推给D(注意不是A把流推给D),观众连接ABCD任意节点都能观看直播,B子节点数为2后再由C创建它的子节点镜像房间,B的子子C的子子以此方式类推创建镜像房间,整体呈现为树形结构,所以称为负载树。






客户端架构 #

  • 多平台客户端音视频采集,编码
  • webscoket统一的信令协议,除了js默认支持websocket外,其他平台使用c++实现了ws,wss
  • 传输层多平台媒体流快速协商握手,加密传输,低延迟实时传输,抗丢包

上次更新: 4/16/2024, 6:10:46 PM