0.引言
阅读本文前,可以先阅读前面的文章,能够帮助你更好理解本篇文章。文章列表如下:
SRS流媒体服务器集群之Forward模式(2)
SRS流媒体服务器集群之Forward模式(1)
SRS流媒体服务器之HTTP-FLV框架分析(1)
SRS流媒体服务器之RTMP推流消息处理(1)
SRS流媒体服务器之RTMP协议分析(2)
SRS流媒体框架分析(1)
SRS流媒体之RTMP推流框架分析(2)
SRS流媒体之RTMP拉流框架分析(3)
SRS流媒体服务器之RTMP协议分析(1)
简述SRS流媒体服务器相关技术
流媒体推拉流实战之RTMP协议分析(BAT面试官推荐)
流媒体服务器架构与应用分析
手把手搭建流媒体服务器详细步骤
手把手搭建FFmpeg的Windows环境
超详细手把手搭建在ubuntu系统的FFmpeg环境
HTTP实战之Wireshark抓包分析
1.Edge原理
SRS流媒体服务器,关于官网的介绍,如下地址:
https://github.com/ossrs/srs/wiki/v3_CN_Edge
Edge模式推流可以推到边缘节点,而前面文章讲解的Forward模式是只能推流到源站。比如这张图里的边缘节点在上海,而这里的源站在杭州,这些边缘节点都会接入到主站里面去。如果推流端先推流到边缘节点,然后推到源站上去。如果拉流节点在北京,首先就去拉取北京的边缘节点的数据,如果该边缘节点的数据没有,就去源站里面取。可以看出Edge模式,相比Forward有个优点就是节省带宽,源站不一定必须给边缘节点发送数据,只有当拉流端去拉取相应的边缘节点,源站才有可能去把数据发给边缘节点。同一个边缘节点Edge,当有多个拉流的时候,也是只有一个连接去源站拉流,当所有拉流退出的时候才会断开源站拉流的连接,对比Forward模式,无论边缘节点是否有拉流,源站都需要往边缘节点去推。这样的方式可以解决某几条流有大量播放请求,如一个流有上万人观看,SRS的Edge可以对接所有的标准RTMP源站服务器。
所谓边缘edge服务器,就是边缘直播缓存服务器,配置时指定为remote模式和origin(指定⼀ 个或多个源站IP),这个边缘edge服务器就是源站的缓存了。当⽤户推流到边缘服务器时,边缘直接将流转发给源站。譬如源站在北京的机房,广州有个⽤户要推流发布⾃⼰的直播流,要是直接推流到北京可能效果不是很好,可以在 广州机房部署⼀个边缘,⽤户推流到广州边缘服务器,广州的边缘服务器转发给北京的源服务器,是一定要回源。
当⽤户播放边缘服务器的流时,边缘服务器看有没有缓存,若缓存了就直接将流发给客户端。 若没有缓存,则发起一路回源连接,从源站取数据源源不断放到⾃⼰的缓存队列。
也就是说, 多个客户端连接到边缘时,只有⼀路回源。这种结构在CDN是最典型的部署结构。譬如北京源站, 在全国32个省每个省都部署了10台服务器,⼀共就有320台边缘,假设每个省1台边缘服务器都有 2000⽤户观看,那么就有64万⽤户,每秒钟集群发送640Gbps数据;⽽回源链接只有320个, 实现了⼤规模分发。
注意:Edge⼀般负载⾼,SRS⽀持的并发⾜够跑满千兆⽹带宽了。
2.搭建Edge模式的集群
SRS流媒体服务器官网关于RTMP分发的介绍,如下地址:
https://github.com/ossrs/srs/wiki/v3_CN_DeliveryRTMP
可以详细参考,界面如下:
2.1 修改源站的配置文件:
在如下目录:
(1)输入命令:
vim conf/origin.conf
默认的配置文件如下: