• 一种高性能与高可用的流媒体系统之媒体流状态管理方法


    源流媒体服务记录所有直接发布于其上的媒体流状态信息,源流媒体服务器启动后或与媒体流状态管理服务器断开后需要立即尝试连接流状态管理服务器,联接成功要立即上报所有由其本身记录的直接发布给该服务器的媒体流状态信息给流状态管理服务器,这时流状态管理服务器返回当前记录的所有其它已联接到该流状态管理服务器的其它源流媒体服务的网络信息列表给该源流媒体服务器,该源流体服务器跟据收到的共它源流媒体的网络信息列表逐个检查是否已有到这些服务器的网络连接,若无立即发起连接。每当源流媒体流服务器收到新的发布媒体流时,除了本身要做记录外,同时上报给流状态管理服务器。媒体流状态管理服务器在检测到有源流媒体服务器与之建立连接或断开连接要通知所有其它源流媒体服务器。

    通过前述机制,源流媒体服务器之间互相建立有网络联接,源流媒体服务器与流状态管理服务器之间也建立有网络联接,这样在某边缘流媒体服务器E向源流媒服务器A发起拉某媒体流AS时,若源流媒服务器AAS,可以立即向E转发AS,若无就需要先查询AS所在的源媒体服务器的网络信息并向其拉流,有三种查询通讯路径:

      1 源流媒体服务器A直接向所有与之建立网络连接的源流媒体服务器中的每一个发起查询(由于源流媒体服务器之前已经互相建立连接),类似于广播式查询;

      2 源流媒服务器A直接向流状态管理服务器发起查询;

      3 源流媒体服务器A,首先将所有与其已建立网络连接的源流媒体服构建出待查源流媒体服务器列表L,将待查源流媒体服务器列表L与源流媒体服务器A本身的标识信息M、待查媒体流AS名称等信息作为参数向流媒体服务器列表L中第一项标示的源流媒体服务器B的发起查询,源流媒体服务器B若没有该流,由B向流媒体服务器列表L的第二项标示的源流媒体服务器C发起查询,源流媒体服务器C若没有该流,由C向流媒体服务器列表L的第三项标示的源流媒体服务器D发起查询,如此反复直至查询完L或在中间找到AS所在的源流媒体服务器,在查询过程中若某待查源流媒服务器比如BC网络连接断开了,可以跳过C,由BC的下一项标示的源流媒体服务器D发起查询。查询结果返回路径正常来说都是待查源流媒体服务器列表L中的最后一项(可能没有找到结果)或中间某项所项示的源流媒体服务器ZA直接返回,ZA若网络连接断开,由Z在待查源流媒体服务器列表L中找到Z所在项的前一项所标示的源流媒体服务器Y,然后ZY返回查询结果,Y收到查询结果直接向A返回查询结果,若YA的网络连接也断开了,向前一步所述的哪样处理,如此反复,直至查询结果返回给发起查询的源流媒体服务器A

    上述三种查询中,从查询性能看,第一种方式在发起查询的源流媒体服务器A与实际承载待查媒体流AS的源流媒体服务器在同一机房时最快,非同机房时第二种方式最快也可能与与第一种方式差不多,无论何情况第三种查询方式最慢;从能提供媒体流查询结果的覆盖率来看,第二种与第三种查询模式都较全,而第一种覆盖率最低;从查询服务高可用来看,第二种由于媒体流状态管理服务器存在单点故障问题,可用性最差;第一种查询方式返回查询结果时间由于不一致导致具体等待查询结果多久不太好控制。基于此,源流媒服务器A在查询媒体流AS所在的源流媒体服务器时同时发起三种查询请求,无论哪种查询方式或哪台服务器先返回查询到媒体流AS所在的源流媒体服务器的网络信息即宣告本次查询结束,否则若查询方式2或查询方式3两者有一个返回查询不到媒体流AS所在的源流媒体服务器的网络信息时也认为查询结束并认为查询不到该AS所在的源流媒体服务器的网络信息(可能是播放端在播放流前发布的同名媒体流刚好结束发布了)。从前面的描述可以看出,第一、第二两种查询方式可以提升查询效率,而第一、三种可以提高查询的高可用性,综合应用即可兼顾高性能查询与查询服务的高可用性,并且本文提到的方法相较于其它方法(比如主备模式)具有逻辑实现简单、数据一致性更高。

  • 相关阅读:
    IE不支持 ES6 Promise 对象的解决方案
    微信小程序使用阿里图标
    IE浏览器 ajax传参数值为中文时出现乱码的解决方案
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
    常见的一些浏览器兼容问题
    移动端rem设置(部分安卓机型不兼容)
    element ui el-menu样式调整
    原生login页面
    elemet ui去除table 样式
    项目上线
  • 原文地址:https://www.cnblogs.com/oldmanlv/p/5551981.html
Copyright © 2020-2023  润新知