近期我们的EasyRTC进行了新的版本修正,开发了MCU版本和SFU版本(MCU与SFU方案的区别是什么),小规模企业用户可选MCU方案,大型会议现场可选SFU方案。在EasyRTC-SFU软件中,后台管理程序使用 Go 语言开发。具体架构图设计如下:
基本分为三层设计,下面就这三层各模块做下说明。
1、路由层
首先最上层为路由层,主要分为两个模块,一个是 app 模块,一个是 routers 模块。
- app 模块主要管理整个应用程序的各种配置、数据模型和初始化数据库等工作。
- routers 模块中定义了对外暴露的路由接口,提供 RESTful 接口。
2、服务层
程序的第二层中主要模块为 server 模块。server 模块为服务模块,主要进行逻辑处理,比如收到 routers 中对应的路由请求后,在 server 模块进行各种逻辑处理。比如调用 db 模块创建数据,删除数据,查询数据等,并将对应的结果返回给上层使用。
3、处理层
最后一层为数据处理层,主要模块为 db 模块,在此模块中封装对常见数据库的支持。比如sqlites3、mysql和postgres。
在代码实现中,各模块及说明如下:
util: 封装常用的工具方法,如日志和哈希算法处理等。 config.toml: 配置文件。 Dockerfile: docker 相关编译。 easyrtc.db: 测试时使用的 sqlite3 数据库,会自动生成。 easyrtc.log: 日志,自动生成。 main.go: 程序入口文件。
EasyRTC-SFU最终实现:
SFU不对音视频进行混流,收到某个终端共享的音视频流后,就直接将该音视频流转发给房间内的其他终端。EasyRTC-SFU版使用该方案能够对CPU资源实现低消耗,且有很大的灵活性,能够更好地适应不同的网络状况和终端类型。如若想了解更多内容,欢迎访问EasyRTC-MCU、EasyRTC-SFU,也可以随时咨询我们。