SRS-DOLPHIN
單進程SRS支持7.5k并發(fā),如果單機需要單機100K并發(fā),可以使用多進程SRS,即SRS-DOLPHIN。目前測試SRS-DOLPHIN的測試數(shù)據(jù)是20K并發(fā),理論上多進程的擴展性可以到達任意并發(fā),只要你的CPU和網(wǎng)卡還有交換機夠。而SRS-DOLPHIN不僅僅是高并發(fā),還可以做容錯,提高穩(wěn)定性。只需要修改啟動命令,兼容單進程的配置文件。
SRS為何做進程?有三個主要的因素:
100k目標:萬兆和多萬兆網(wǎng)絡(luò)會在這幾年使用起來,而SRS單進程對于網(wǎng)絡(luò)擴展性不好,多進程是支持富余硬件資源最好的方式。就算是幾個千兆網(wǎng)卡,多進程的效率比單進程也更高,涉及到linux的中斷處理。
邊緣熱備:如果邊緣掛掉了,客戶端就斷開,譬如7.5k個用戶都在一個邊緣上,那受影響的就是7.5k。如果邊緣使用srs-dolphin,可以每個SRS只支持2.5k,3個進程支持7.5k,這樣每個SRS掛掉只影響2.5k用戶。
最簡多進程方案:srs-dolphin是由外國的一個牛逼的朋友提供的一個多進程方案,使用和部署和單進程SRS一樣,只是啟動的命令不太一樣而已,配置文件都一樣。srs-dolphin更像是個進程管理器和容器,實現(xiàn)方式還是SRS單進程疊加。SRS會支持任何功能,只要能找到最簡單方案。
SRS-DOLPHIN是流媒體邊緣的最佳方案,現(xiàn)在有幾個多進程的方案:
nginx:若SRS能輸出HTTP-FLV,那么可以啟動幾個SRS邊緣,再啟動一個nginx反向代理,這樣可以實現(xiàn)多進程,相當于一個本地小集群。粗步測試數(shù)據(jù)是,10k并發(fā)時nginx占用350%CPU。
go-sharp:這個是srs org提供的一個go實現(xiàn)的HTTP FLV反向代理,替代nginx的方案,主要支持SRS檢測,負載均衡。粗步測試數(shù)據(jù)是,10k并發(fā)時go-sharp占用300%CPU。
srs-dolphin:這個是SRS多進程方案,支持基于SRS的RTMP和HTTP的多進程方案,不僅僅是HTTP FLV。粗步測試數(shù)據(jù)是,20k并發(fā)時srs-dolphin占用320%CPU。
為何SRS-DOLPHIN可以做到一倍的性能提升?因為SRS-DOLPHIN實現(xiàn)的是TCP層次的代理,不解析協(xié)議直接轉(zhuǎn)發(fā)。
SRS-DOLPHIN的弱點就是不解析協(xié)議,所以無法做源站多進程。但是從業(yè)務(wù)邏輯上講,源站7.5k并發(fā)足夠了;如果一定要做源站多進程,譬如流就是很多時,有個朋友的情況就是100k個流,那么源站多進程也扛不住,必須使用多源站,也就是多個源站服務(wù)器,配合邊緣路由實現(xiàn)。邊緣路由也就是一個邊緣SRS,知道一組源站SRS,知道哪個流應(yīng)該回哪個源站;邊緣路由不適合做成開源,涉及到的業(yè)務(wù)邏輯居多;觀止已經(jīng)在計劃這個產(chǎn)品了。
下面是SRS-DOLPHIN在20k的測試數(shù)據(jù):
GO-SHARP參考:https://github.com/simple-rtmp-server/go-sharp
SRS-DOLPHIN請參考:https://github.com/simple-rtmp-server/srs-dolphin
總結(jié)
以上是生活随笔為你收集整理的SRS-DOLPHIN的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SRS提供的librtmp
- 下一篇: 协程库st(state threads