“这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战”
如何支持更多的人推流?如何支持更多的人观看?这本质上就是系统的水平扩展能力。
1、源站集群-更多推流
在SRS的角色中,Edge主要解决播放或下行的扩展能力,而Origin则是解决上行或推流的扩展能力,比如需要推1万路流。
1.1 Vhost方案
如下图所示:
此时需要终端指定不同的vhost
1.2 源站集群方案
基于Origin Cluster源站集群扩展源站,如下图所示:
两个Origin服务器之间会互相查询流,若Edge请求的流不在本源站上,会将Edge定向到有流的Origin
由于源站是流的最终所在地,所以他本质上是有状态的,两个源站并不是完全等价的。而边缘可以认为是合并回源的代理,两个Edge是没有差别的,它们并没有存储流的信息,都是通过源站获取流。
因此,推流的扩展能力,比播放的扩展能力,对系统的挑战是更大的。
通过Edge推流
不建议直接推流到Origin源,而是通过Edge推流到Origin
1.3 编写源站origin配置文件
The config for origin 19350:
# conf/origin.conf listen 19350; max_connections 1000; daemon off; pid objs/origin.cluster.serverA.pid; srs_log_file ./objs/origin.cluster.serverA.log; http_api { enabled on; listen 9090; } vhost __defaultVhost__ { cluster { # local: It's an origin server, serve streams itself. # remote: It's an edge server, fetch or push stream to origin server. mode local; # 源站集群只支持RTMP协议