企业视频远程办公音视频会议通话系统EasyRTC-SFU后台管理程序Go语言开发设计思路

近期我们的EasyRTC进行了新的版本修正,开发了MCU版本和SFU版本(MCU与SFU方案的区别是什么),小规模企业用户可选MCU方案,大型会议现场可选SFU方案。在EasyRTC-SFU软件中,后台管理程序使用 Go 语言开发。具体架构图设计如下:

98.png

基本分为三层设计,下面就这三层各模块做下说明。

1、路由层

首先最上层为路由层,主要分为两个模块,一个是 app 模块,一个是 routers 模块。

  • app 模块主要管理整个应用程序的各种配置、数据模型和初始化数据库等工作。
  • routers 模块中定义了对外暴露的路由接口,提供 RESTful 接口。

2、服务层

程序的第二层中主要模块为 server 模块。server 模块为服务模块,主要进行逻辑处理,比如收到 routers 中对应的路由请求后,在 server 模块进行各种逻辑处理。比如调用 db 模块创建数据,删除数据,查询数据等,并将对应的结果返回给上层使用。

3、处理层

最后一层为数据处理层,主要模块为 db 模块,在此模块中封装对常见数据库的支持。比如sqlites3、mysql和postgres。

RTC.png

在代码实现中,各模块及说明如下:

99.png

util: 封装常用的工具方法,如日志和哈希算法处理等。
config.toml: 配置文件。
Dockerfile: docker 相关编译。
easyrtc.db: 测试时使用的 sqlite3 数据库,会自动生成。
easyrtc.log: 日志,自动生成。
main.go: 程序入口文件。

EasyRTC-SFU最终实现:

RTC1.png

SFU 不对音视频进行混流,收到某个终端共享的音视频流后,就直接将该音视频流转发给房间内的其他终端。EasyRTC-SFU版使用该方案能够对CPU资源实现低消耗,且有很大的灵活性,能够更好地适应不同的网络状况和终端类型。如若想了解更多内容,欢迎访问EasyRTC-MCUEasyRTC-SFU,也可以随时咨询我们。

猜你喜欢

转载自blog.csdn.net/TsingSee/article/details/108595869
今日推荐