SRS进入20K时代,不仅仅是并发

2023-10-21 13:59

本文主要是介绍SRS进入20K时代,不仅仅是并发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SRS进入20K时代,不仅仅是并发

2015-05-29  winlin  SRS

单进程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进入20K时代,不仅仅是并发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254868

相关文章

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

Java并发编程之——BlockingQueue(队列)

一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作2. 当队列空了的时候进行出队列操作123 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个空

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。以下是从八个关键方面提出的策略,旨在帮助无人机培训机构在内卷时代中稳步前行。 1. 精准定位市场需求 深入研究市场:通过市场调研,了解无人机行业的最新趋势、政策导向及未来发展方向。 明确目标

CRtmpServer转推流到Nginx Rtmp及SRS(SimpleRtmpServer)的经历

转自:http://blog.csdn.net/fengyily/article/details/42557841 本人一直用的是CRtmpServer服务,在CRtmpServer服务中根据自已的想法也加入了许多功能,如通过http接口来加载配置等,苦于不支持HLS,自已添加ts分片水平又有限,思来想去决定借助SimpleRtmpServer的HLS功能。说干就干,马上查找相关资源

java线程深度解析(五)——并发模型(生产者-消费者)

http://blog.csdn.net/Daybreak1209/article/details/51378055 三、生产者-消费者模式     在经典的多线程模式中,生产者-消费者为多线程间协作提供了良好的解决方案。基本原理是两类线程,即若干个生产者和若干个消费者,生产者负责提交用户请求任务(到内存缓冲区),消费者线程负责处理任务(从内存缓冲区中取任务进行处理),两类线程之

java线程深度解析(四)——并发模型(Master-Worker)

http://blog.csdn.net/daybreak1209/article/details/51372929 二、Master-worker ——分而治之      Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

使用协程实现高并发的I/O处理

文章目录 1. 协程简介1.1 什么是协程?1.2 协程的特点1.3 Python 中的协程 2. 协程的基本概念2.1 事件循环2.2 协程函数2.3 Future 对象 3. 使用协程实现高并发的 I/O 处理3.1 网络请求3.2 文件读写 4. 实际应用场景4.1 网络爬虫4.2 文件处理 5. 性能分析5.1 上下文切换开销5.2 I/O 等待时间 6. 最佳实践6.1 使用 as