OWT Server 整体架构分析

2023-11-22 15:08
文章标签 分析 整体 架构 server owt

本文主要是介绍OWT Server 整体架构分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基础模块架构图

按自己的理解用 visio 大体画了一下。

前一篇博客讲过OWT Server是模块化的设计,不同模块可以分开部署,便于新手入门,下面画了OWT Server的一些基础模块(支持WebRTC开会)的框架图,如果把这几个模块搞清楚了,差不多对OWT Server也就理解了。

OWT-Server framework

  1. 模块内部的 RPC 调用都是通过 RabbitMQ 消息队列实现的,都不是直接调用,即上图中 所有的虚线都是通过RabbitMQ间接通信的,而不是直接连接

  2. 模块内部流交换(Internal IO)默认用的是 TCP 协议直接交互。

  3. 会议房间信息(默认布局和支持的编码格式等)在创建会议的时候存储在 MongoDB 中。

基础模块介绍

模块功能
Cluster Manager集群管理模块, 负责监控与调度集群中的其他模块,其他模块启动后会加入集群,并维持约1秒一次的心跳保活。
Conference Agent会议控制管理模块,所有的会中逻辑,包括但不限于发布和订阅媒体流,静音媒体流等操作。也负责调度其他模块,比如激活一场会议,Conference模块要申请并维护至少一个 Video、Audio 和 WebRTC 模块。
Management API提供整个系统的对外Restful API,就是一个简单的HTTP服务器,提供创建与删除会议、获取入会token和会议控制等功能的接口。
Portal是 OWT 系统对接客户端 WebRTC 协议入会的信令模块,使用的WebSocket保持与服务器间的信令交互。
WebRTC Agent是OWT系统对接客户端WebRTC协议入会的媒体处理模块,主要是接收客户端WebRTC协议过来的媒体流 解包转换为内部流交换封包格式发送给Video/Audio Agent,和反向的媒体流操作。
Video Agent负责视频混流和视频转码功能,MCU会议模式下,一场会上来好几路视频流,都通过WebRTC 模块发送给Video模块就行混流,然后输出一路视频再发给用户。
Audio Agent负责音频混流和转码,功能通Video模块。

其他模块介绍

其他模块功能
Management Console会议房间配置的Web管理页面,默认端口3300。
Streaming Agent对接通用流媒体的模块,内部分为 streaming-in 和 streaming-out ,对应 RTSP / RTMP 等格式的拉流和推流。
Recording Agent录制模块,可以录制任意指定ID的媒体流,保存为 H264 & AAC 编码格式的的 mp4 或者 mkv 文件。与Streaming Agent 类似功能流程,从Video/Audio Agent获取媒体流进行保存。如果完全按照Streaming Agent 的 In 和 Out 思想的话,也应该包含 读取媒体文件的功能,但是它没有,完全可以自己实现。
SIP Portal对接SIP系统的信令模块。对应支持 WebRTC 协议的Portal模块。
SIP Agent对接SIP系统的流媒体模块。与WebRTC Agent类似功能。
Analytics Agent顾名思义 媒体或网络分析用的吧,没用过,不熟悉。

Agent 模块架构

这里说的 Agent 模块指的是 Conference AgentWebRTC AgentVideo AgentAudio AgentStreaming AgentRecording AgentSIP AgentAnalytics Agent。可能你刚才就在纳闷为啥这些模块名字都带有agent字样,是的,它们具有同样的设计思想。Agent 有代理人的意思,也就是说这些模块不是“真正干活的”。

所有的 Agent 模块都采用两层工作模型,即agent进程和node进程。node 进程是实际干活的,agent 进程负责创建和管理 node 进程。node 进程与 agent 进程通过管道进行进程间通信。

服务启动后即创建一个 agent 进程,加入集群并定时向Cluster Manager 发送 KeepAlive 消息和汇报机器负载信息。同时创建N个 node 进程预留使用,N由配置文件指定。比如在会议初始化的过程中,1. 负责具体房间的某个Conference nodeCluster Manager 申请调度一个Video agent (RPC schedule),2. 然后Conference node 向这个Video agent申请一个Video node(RPC getNode)。3. 接下来Video agent调用这个Video node的RPC方法进行发布或者订阅视频。

这篇关于OWT Server 整体架构分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410991

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断