zoukankan      html  css  js  c++  java
  • 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相关内容,欢迎联系我们了解或者试用。

  • 相关阅读:
    ZOJ 3765 Lights (zju March I)伸展树Splay
    UVA 11922 伸展树Splay 第一题
    UVALive 4794 Sharing Chocolate DP
    ZOJ 3757 Alice and Bod 模拟
    UVALive 3983 捡垃圾的机器人 DP
    UVA 10891 SUM游戏 DP
    poj 1328 Radar Installatio【贪心】
    poj 3264 Balanced Lineup【RMQ-ST查询区间最大最小值之差 +模板应用】
    【转】RMQ-ST算法详解
    poj 3083 Children of the Candy Corn 【条件约束dfs搜索 + bfs搜索】【复习搜索题目一定要看这道题目】
  • 原文地址:https://www.cnblogs.com/easydss/p/14217950.html
Copyright © 2011-2022 走看看