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

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异