• RTMP协议互联网教育课堂直播点播系统EasyDSS获取直播信息优化设计方案介绍


    EasyDSS视频平台我们讲过很多,EasyDSS相较于其他视频平台的特点是可以直播也可以点播,支持将视频文件上传或者推流桌面录屏等,该特点在很多教育行业课堂直播上发挥了作用。EasyDSS直播列表页面如下:

    该页面主要获取10行数据,如果正在处于直播状态中,则显示对应的信息,前端网页主要发送 /live/list 请求到 Go 后台接口,Go 层收到请求后,收集信息返回到前端。目前的设计如下:

    该处逻辑的调用顺序为:

    1. 前端发送 post 请求,获取一页 10 个数据:/live/list;
    2. Go 层收到请求,从数据库层获取对应的 10 个数据;
    3. 因为 Go 层不知道每个直播间对应的直播状态,因此需要向 C 层发送 http 请求,获取对应的 10 个数据的信息;
    4. Go 层每个数据都会向 C 层发送一次 http 请求。
    5. Go 层收到 C 层直播结果后,将数据处理后返回给前端。

    以上设计,在用户量不多的情况,问题不大,但是在数据量大的时候有以下缺点:

    1. 前端发送1次 http 请求,获取10个数据,Go层就要发送10次http请求到C层。如果有10个前端,那么Go层就会发送100次请求到 C 层,导致 Go 层和 C 层的压力都会非常大;
    2. 多个前端存在的情况下,有可能查询很多相同的数据,导致 Go 层向 C 层的请求有很多冗余存在。

    针对以上缺点对该模块进行结构上的重新设计,如下图:

    首先将该模块分成两个模块,Go层和C层交互的模块A,前端和Go层交互的模块B。以下对模块A和B分别进行描述。

    模块A的设计如下:

    1. Go 层定时向C层发送获取全部正在直播状态的信息,定时时间可以配置,一般在 1s 以内都不会影响前端的显示;
    2. C 层收到请求后,将正在直播的直播间信息返回;
    3. Go 层收到C 层的信息后,将信息加入到自己的缓存层中;
    4. 缓存层中的数据被定时更新掉。
      模块B的设计如下:
    5. 前端发送 HTTP 请求到 Go 层;
    6. Go 层收到请求后,从数据库获取直播间信息;
    7. Go 层从缓存层中获取正在直播的直播间信息,更新直播间信息,然后将信息返回给前端;
    8. 前端都到信息后,显示出来。

    新的设计,在有大量用户和前端的情况下,比如100个前端,前端会向Go层发送100个http请求,而 Go 层仅仅发送一次请求到 C 层,相对于以前要发送 1000 次请求到 C 层,极大的优化了代码,消耗更少的性能。

    为了更好适应不同服务的性能,TSINGSEE青犀视频也会对其他云边端视频平台进行不同程度的优化,大家可以关注我们获取最新信息。如果还想了解更多EasyDSS相关内容,欢迎联系我们了解或者试用。

  • 相关阅读:
    思路决定出路
    php-异常处理机制
    Win10 IoT 10 中文显示乱码或报错的问题
    Win10 IoT 9 Windows IoT Core扩展开发包
    Win10 IoT 8 GPIO输入输出
    Win10 IoT 7 10586版本的异同
    Win10 IoT 6 设置系统时间
    Win10 IoT 5 修改IP地址
    Win10 IoT 4 远程启动计划任务
    Win10 IoT 3 部署应用
  • 原文地址:https://www.cnblogs.com/easydss/p/14217950.html
Copyright © 2020-2023  润新知