為什么go語言,原因太多了!
- 輕量級協程,隨時goroutine
- 方便的channel
- 方便的interface
- 強大的服務器性能
簡單點GO語言---為服務器而生!
我們來看看: livego--基於go語言的rtmp直播服務器
github地址: https://github.com/runner365/livego
什么是livego
livego是基於golang開發的rtmp服務器
為什么基於golang
-
golang在語言基本支持多核CPU均衡使用,支持海量輕量級線程,提高其並發量
當前開源的缺陷:- srs只能運行在一個單核下,如果需要多核運行,只能啟動多個srs監聽不同的端口來提高並發量;
- ngx-rtmp啟動多進程后,報文在多個進程內轉發,需要二次開發,否則靜態推送到多個子進程,效能消耗大;
golang在語言級別解決了上面多進程並發的問題。
-
二次開發簡潔快速
golang的開發效率遠遠高過C/C++
livego支持哪些特性
- rtmp 推流,拉流
- 支持hls觀看
- 支持http-flv觀看
- 支持gop-cache緩存
- 靜態relay支持:支持靜態推流,拉流(支持對rtmp/http-flv拉流)
- 動態replay支持:支持http動態控制拉流、推流
- 支持push,push_done事件的外掛進程啟動
- 統計信息支持:支持http在線查看流狀態
livego性能有多強
go語言為服務器性能而生,看看性能有多強吧!
測試機型:阿里雲32核64G獨享服務器
測試方法:
- 用ffmpeg向livego的rtmp服務推流:ffmpeg -re -i source.200kbps.768x320.flv -c copy -f flv rtmp://10.111.59.49/live/stream
- 啟動3個sb_rtmp_load的拉流進程,每個進程拉流10000路