1 直播系统
1.1 直播系统基本架构

作为一个流媒体而言 其实我们重点关注的是直播集群和nginx那一块。
SRS 直播集群
SRS(Simple Realtime Streaming Server)是一个用 C++ 开发的开源实时流媒体服务器,专注于直播领域。
- 功能特性
- 多协议支持:支持 RTMP(Real Time Messaging Protocol)、HTTP - FLV、HLS(HTTP Live Streaming)、WebRTC 等多种直播协议 。例如,RTMP 常用于推流,能低延迟地将直播流从主播端推送到服务器;HLS 则是苹果提出的基于 HTTP 的流媒体传输协议,适合在移动端播放,通过切片的方式实现直播流分发。
- 集群部署:通过集群方式部署,可实现负载均衡和水平扩展。比如 SRS Edge 集群,用于解决大量用户观看直播流的问题,能支持众多用户同时观看 。但 SRS Edge 有一定限制,它只支持直播流协议(如 RTMP 或 HTTP - FLV ),不支持 HLS 或 DASH 等切片的直播流(因其本质是文件分发而非流),也不支持 WebRTC 的流分发(WebRTC 有自己独立的集群方式 )。
- 高效性能:采用高效的网络 I/O 模型和内存管理机制,能处理大量并发连接,降低服务器资源消耗,保障直播服务的流畅性。
- 工作流程:主播端使用 OBS 等推流工具,基于 RTMP 协议将直播流推送到 SRS 直播集群中的源站服务器 。源站服务器接收推流后,可根据配置进行转码、录制等处理,再通过集群内的边缘服务器,以合适的协议(如 HLS 协议将直播流切片成 m3u8 索引文件和 ts 视频片段 )分发给不同终端的观众。
源服务器和边缘服务器的之间的交互
- 缓存预热与内容推送
源服务器可主动将热门直播内容、重要配置文件等推送到边缘服务器 。比如一场备受期待的大型直播活动前,源服务器提前把直播预告素材、主播介绍等静态资源推送到边缘服务器进行缓存,方便用户后续快速访问。 - 缓存拉取与更新
缓存拉取:当用户请求某直播内容,边缘服务器发现本地缓存未命中(没有该内容 )时,会向源服务器发起请求拉取内容。例如新上线的小众直播节目,首次有用户请求观看,边缘服务器就从源服务器获取直播流数据 。
缓存更新:若源服务器上的直播内容更新(如直播过程中切换场景、画质调整 ),边缘服务器缓存内容过时,源服务器会根据配置策略(如定时检查、内容变更触发 )通知边缘服务器更新,或者边


2万+

被折叠的 条评论
为什么被折叠?



