由于媒体推流客户端所在地域不同、所接入网络运营商不同、就近接入原则等因素,导致不同的视频推流客户端会推流至不同的流媒体服务器(本文主要针对目前WEB或手机的基于TCP的流媒体服务器),在某流媒体服务器收到媒体拉流客户端的拉流请求时,其本身可能由于不存在该流,导致该流媒体先通过流调度服务器定位到该请求流,然后向有该流的流媒体服务器发出拉流请求,在收到流数据后该流媒体服务器向媒体拉流客户端转发该媒体流,再给合流媒体的分级结构等其它因素,这种基于即时建立TCP的连接的媒体流在大量推流与拉流用户时往往会有很多路媒体流在不同的流媒体服务器之间传输,这样会存在如下缺点:

1  由于每路媒体流就一个TCP连接,而TCP连接的建立需要一定开销且会带来一定时延,在大量媒体流在流媒体服务器之间互相转发时,这个叠加开销会更大了

2  基于TCP连接只传输一路媒体流,不利于按消息的不同保证优先传送 3 在基于分块协议流传输时,音频小包(一个音频帧一个块基于是够了)的封装块与视频帧(特别是1KB至3KB大小的P、B帧)的太多尾块,都达不到MTU的大小,加之考虑到实时性,往往会关闭Nagle算法,这样导致网络传输效率低下、服务器软中断升高。

为克服上述问题,可以这样做: 流媒体服务器启动后通过流调度管理服务器拿到其它所有同级或其上级流媒体的相关网络地扯信息,然后预先建立5个TCP连接,这样互相发起建立连接后,每两台流媒体服务器之间预先建立10个连接(5个主动、5个被动),每个连接可以传输100路左右的媒体流,这样流媒体服务器集群内部的流媒体服务器之间像高速公路一样一个内部静态网络连接结构已经预先建立起来,随时静待汽车经过,同时启动一个单独的低优先级线程监控当前连接数与每个连接承载的媒体流数,若有断开连接或不能满足目前的媒体流数且低于一定阀值,由该线程负责在后台默默建立TCP连接(单TCP连接具体承载的媒体流数在TCP正在建立等特别时机允许超过100,只要不达到最大设定的阀值即可)。 在有媒体流拉流客户端向某流媒体服务器发起播放请求后,该流媒体通过流调度管理服务器拿到所请求媒体流所在的目标流媒体地扯信息后,通过预先建立的TCP连接中的一个TCP连接直接向该目标流媒体服务器发送播放流请求,目标流媒体服务器通过基于块协议的多路复用、合包技术将该媒体流与其它早期选定的媒体流合包后一起发送给该流媒体服务器,该流媒体解包解复用后再转后给相应的媒体流拉流客户端。从媒体流转发端或源端所在的流媒体服务器角度来看,转发过程是这样的:由于是基于单个TCP连接传送多路媒体流,这样相较于传统以输入流连接驱动模式变成了以输出流连接驱动模式了,媒体流处理线程扫描所有的输出流连接,针对其中某个连接查看所有由该连接传送的输入媒体流,首先看是否有控制指令要传输,若有放入发送缓冲区,若无,接着查看是否有音频帧要传送,若有放入发送缓冲区,最后再查看是否有视频帧要传输,若有放入发送缓冲区,且前述几步每当发送缓冲区有新数据时都判断一下是否达到了MTU上限,若达不到继续,若达到立即发送,然后判断下一个输出流连接的处理方式同前面一个一样,如此循环,这样就做到了控制指令消息的传送优先级大于音频传送优先级了,而音频传送优先级又高于视频传送优先级。

预期收益:有效提升流媒体服务器之间传输效率、流量降低10%(主要是头部数据)、提高实时性、保证重要数据优先处理

复用TCP连接提升流媒体服务器之间流量转发效率的更多相关文章

  1. 原来:HTTP可以复用TCP连接

    问题 线上的一个项目会和微信服务器有API请求(目的是获取用户的微信信息),但会有偶发的报错: 'Connection aborted.', ConnectionResetError(104, 'Co ...

  2. 开源流媒体服务器EasyDarwin支持epoll网络模型,大大提升流媒体服务器网络并发性能

    经过春节前后将近2个月的开发和稳定调试.测试,EasyDarwin开源流媒体服务器终于成功将底层select网络模型修改优化成epoll网络模型,将EasyDarwin流媒体服务器在网络处理的效率上提 ...

  3. EasyDarwin开源流媒体服务器进行RTSP转发过程中将sdp由文件存储改成内存索引

    -本篇由团队成员Fantasy供稿! 原始版本 在Darwin Streaming Server版本中,推送端DoAnnounce的时候后服务器会根据easydarwin.xml中配置的movies_ ...

  4. HTTP的RST包与WinHttp延迟关闭TCP连接

    一.RST包也常见于断开TCP连接  几个月前用wireshark抓HTTP包发现有的网络通信在结束的时候没有使用四次握手,而是直接使用RST包.如: 在TCP协议中RST表示复位,用来异常的关闭连接 ...

  5. 详解TCP连接的“三次握手”与“四次挥手”(上)

    一.TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它 ...

  6. TCP/IP协议--TCP协议概括和TCP连接的建立和终止

    TCP提供一种面向连接的.可靠的字节流服务.面向连接指,发送和接收方在交换数据前必须建立一个TCP连接.顺便说下,一个TCP连接只有两方,因此广播和多播是不能应用于TCP的.字节流指,两个应用程序通过 ...

  7. Java网络编程系列之TCP连接状态

    1.TCP连接状态 LISTEN:Server端打开一个socket进行监听,状态置为LISTEN SYN_SENT:Client端发送SYN请求给Server端,状态由CLOSED变为SYN_SEN ...

  8. TCP连接复用

    转自网络:看到一陌生名词,记录一下 TCP连接复用技术通过将前端多个客户的HTTP请求复用到后端与服务器建立的一个TCP连接上.这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带 ...

  9. 服务器tcp连接timewait过多优化及详细分析

    [背景说明] 在7层负载均衡上,查询网络状态发现timewait太多,于是开始准备优化事宜 整体的拓扑结构,前面是lvs做dr模式的4层负载均衡,后端使用(nginx.or haproxy)做7层负载 ...

随机推荐

  1. C# ExcelHelper

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  2. Mysql的热备份[转载]

    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始 ...

  3. 笔记本开临时Wifi

    笔记本开临时热点 1. netsh wlan set hostednetwork mode=allow ssid=xianzhonPC key=123456782. 打开共享和网络—更改适配器设置—本 ...

  4. 前端自动化部署之gulp

    1.首先需要安装node+npm(这里不再叙述,网上教程一大堆) 2.gulp全局安装:npm install -g gulp 3.cd进入到你的项目目录,这里使用demo文件夹为我的示例项目 4.在 ...

  5. 关于MPMoviePlayerController类播放视频时,外放没有声音的问题(ios)

    一.导入音频资源类 #import "AVFoundation/AVAudioSession.h" 二.在播放视频的方法中加一句支持外放的代码 [[AVAudioSession s ...

  6. CSS3 Filter滤镜效果

    关注到它是在一次分享会当中,很神奇,只需写一行代码就可以变身很美的视觉效果,这就是CSS3滤镜. 语法 filter:fuction(param); 如今浏览器支持情况相比以前乐观很多,点击查看兼容 ...

  7. [帖子收集]环境光遮蔽(Ambient Occlusion)

    环境光遮蔽,效果示例图 图片左边是一条龙的简单模型,呈现在一个均匀照明的环境中.尽管模型中有一些明暗不同的区域,但大部分光照都是均匀的.虽然模型有着相当复杂的几何形状,但看上去比较光滑平坦,没有明显的 ...

  8. 找轮转后的有序数组中第K小的数

    我们可以通过二分查找法,在log(n)的时间内找到最小数的在数组中的位置,然后通过偏移来快速定位任意第K个数. 此处假设数组中没有相同的数,原排列顺序是递增排列. 在轮转后的有序数组中查找最小数的算法 ...

  9. angular中的等号(==)判定

    使用angularjs的时候会使用到其中的表达式,其中有相等的判断.由于js有==和===的区别,于是就想看看是否相同.自己稍微做了一点测试,一看便知. 先给结论:angularjs表达式中的==和= ...

  10. JAVA中方法的定义与使用(课堂学习归纳)

    组合数,百度词条是这样解释的:从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数(Combination) 对于计算组合数,需要一定的工作量,计算机可以很 ...