单进程SRS支持7.5k并发,如果单机需要单机100K并发,可以使用多进程SRS,即SRS-DOLPHIN。目前测试SRS-DOLPHIN的测试数据是20K并发,理论上多进程的扩展性可以到达任意并发,只要你的CPU和网卡还有交换机够。而SRS-DOLPHIN不仅仅是高并发,还可以做容错,提高稳定性。只需要修改启动命令,兼容单进程的配置文件。

SRS为何做进程?有三个主要的因素:

  1. 100k目标:万兆和多万兆网络会在这几年使用起来,而SRS单进程对于网络扩展性不好,多进程是支持富余硬件资源最好的方式。就算是几个千兆网卡,多进程的效率比单进程也更高,涉及到linux的中断处理。

  2. 边缘热备:如果边缘挂掉了,客户端就断开,譬如7.5k个用户都在一个边缘上,那受影响的就是7.5k。如果边缘使用srs-dolphin,可以每个SRS只支持2.5k,3个进程支持7.5k,这样每个SRS挂掉只影响2.5k用户。

  3. 最简多进程方案:srs-dolphin是由外国的一个牛逼的朋友提供的一个多进程方案,使用和部署和单进程SRS一样,只是启动的命令不太一样而已,配置文件都一样。srs-dolphin更像是个进程管理器和容器,实现方式还是SRS单进程叠加。SRS会支持任何功能,只要能找到最简单方案。

SRS-DOLPHIN是流媒体边缘的最佳方案,现在有几个多进程的方案:

  1. nginx:若SRS能输出HTTP-FLV,那么可以启动几个SRS边缘,再启动一个nginx反向代理,这样可以实现多进程,相当于一个本地小集群。粗步测试数据是,10k并发时nginx占用350%CPU。

  2. go-sharp:这个是srs org提供的一个go实现的HTTP FLV反向代理,替代nginx的方案,主要支持SRS检测,负载均衡。粗步测试数据是,10k并发时go-sharp占用300%CPU。

  3. srs-dolphin:这个是SRS多进程方案,支持基于SRS的RTMP和HTTP的多进程方案,不仅仅是HTTP FLV。粗步测试数据是,20k并发时srs-dolphin占用320%CPU。

为何SRS-DOLPHIN可以做到一倍的性能提升?因为SRS-DOLPHIN实现的是TCP层次的代理,不解析协议直接转发。

SRS-DOLPHIN的弱点就是不解析协议,所以无法做源站多进程。但是从业务逻辑上讲,源站7.5k并发足够了;如果一定要做源站多进程,譬如流就是很多时,有个朋友的情况就是100k个流,那么源站多进程也扛不住,必须使用多源站,也就是多个源站服务器,配合边缘路由实现。边缘路由也就是一个边缘SRS,知道一组源站SRS,知道哪个流应该回哪个源站;边缘路由不适合做成开源,涉及到的业务逻辑居多;观止已经在计划这个产品了。

下面是SRS-DOLPHIN在20k的测试数据:

GO-SHARP参考:https://github.com/simple-rtmp-server/go-sharp

SRS-DOLPHIN请参考:https://github.com/simple-rtmp-server/srs-dolphin

SRS-DOLPHIN相关推荐

  1. SRS之SrsConfig类

    1. 类定义 1.1 SrsConfig 类 /** * the config service provider. * for the config supports reload, so never ...

  2. Ubuntu 14.04 64bit上编译安装simple-rtmp-server(srs)服务器

    下面的操作完全按照参考文献[1]进行,请采用root用户登陆,我这里只是记录了一下我在Ubuntu 14.04上面编译安装的过程.以作今后参考.该篇文章显示了srs提供的一个demo实例,包括实时流的 ...

  3. java srs 推流_srs安装与ffmpeg推流

    环境说明:ubuntu 16.04 当前目录为~/. 一. 下载git clone https://github.com/ossrs/srs.git 二.部署SRS 关闭防火墙,执行如下命令. ufw ...

  4. 利用正高Dolphin智能广告监测系统做好违法广告监测

    随着社会经济文化事业的快速发展,广告媒体日益丰富,广告样式花样繁多.新型广告层出不穷,广告监管工作量大面广.难度加大,仅靠工商食药监部门人力监测难以面面俱到.实现有效监管. <新广告法>对 ...

  5. WSHPSRS-匹克选择列表生成器-SRS(R12.2.3)

     匹克选择列表生成器-SRS(R12.2.3) --US Program:Pick Selection List Generation - SRS Short Name:WSHPSRS Appli ...

  6. ffmpeg 怎么处理udp音频_STREAM: srs 2.0release,ffmpeg实时转码udp流,出现只有音频没有视频的问题?...

    环境: srs: 2.0release,编译参数 ./configure --disable-all --with-hls --with-ssl --with-http-server --prefix ...

  7. 用SRS和FFMPEG进行直播流转码

    WIKI:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG 一.直播流转码配置及说明 listen              19 ...

  8. 解决电脑无声和爆音问题的神器——SRS audio sandbox

    通常来说,如果电脑突然没有了声音,一般并不是声卡烧坏(当然也有可能是这种情况.) 一般来说,我们会首先试一下直接重装声卡的驱动,这个直接用驱动人生或者驱动精灵这样的软件即可.如果重装了声卡的驱动之后发 ...

  9. SRS学习笔记7-SrsHttpServer

    the http server, use http stream or static server to serve requests. 源代码位置: app\srs_app_http_conn.hp ...

  10. SRS前需求双向追溯解决方法

    第一个问题,什么是SRS前的需求 SRS前的需求可以视为需求的原始素材,来自于客户的建议或要求,领导的意见,团队内部的点子都可以视为SRS前的需求.这些的陈述可能是凌乱的,没有结构的. 第二个问题,S ...

最新文章

  1. pyspark-mongo-input-output
  2. go package学习——os
  3. php中getdistance函数_php代码渗透测试 后门分析篇
  4. ubuntu上如何安装tomcat
  5. Google Analytics 搜索引擎来源
  6. linux 测试cpu计算圆周率_Linux下测试CPU性能
  7. Servlet CDI Example Analysis
  8. ClassNotFoundException和NoClassDefError之间的区别
  9. c#中的线程Thread
  10. iis由5.1变成5.0——怎么回事呢
  11. 基于ANSYS-APDL的简单静力学分析示例(悬臂梁)
  12. php ci 优化,CodeIgniter 性能优化
  13. 透视变换原理、相机成像、灭点
  14. 西西里2286. Stack Implementation
  15. 2k 幻14_ROG幻14经典版2K屏14寸
  16. 【线代NumPy】第八章 - 特征值和特征向量 | Eigenvalue and Eigenvector | 简述并提供代码
  17. java volatile
  18. 车载GNSS/INS/LiDAR坐标系定义与理解
  19. torch中manual_seed的作用
  20. 国际碳行动伙伴组织(ICAP)全球碳市场进展资料2019

热门文章

  1. 多数据源使用spring-data-jpa无法部署到JBoss As Server
  2. (三十)java多线程一
  3. fodera开机启动优化
  4. ThreadPool的使用
  5. 数据结构-线性表(栈与队列的特殊性)
  6. CodeForces - 787D - Legacy(线段树优化建图+最短路)
  7. CodeForces - 1293D Aroma's Search(暴力)
  8. HDU - 3085 Nightmare Ⅱ(双向bfs)
  9. maskrcnn还可以加网络吗_桃子加蜂蜜可以榨汁吗?桃子和蜂蜜可以一起吃吗?原来可以这样吃...
  10. 汇编指令prefix rep: