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

相关文章

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

WiFi6时代来临! 华三H3C NX54路由器还值得购买吗?

《WiFi6时代来临!华三H3CNX54路由器还值得购买吗?》WiFi6时代已经来临,众多路由器厂商也纷纷推出了兼容WiFi6协议的路由器,今天我们将深入体验H3CNX54路由器,这款由知名企业... 随着科技的发展,WiFi6逐渐走进了我们的日常生活之中,相比WiFi5来说,WiFi6拥有更高的带宽、更高

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

四种简单方法 轻松进入电脑主板 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功能。说干就干,马上查找相关资源