分享

建设一套直播CDN、直播平台到底有多难?

 hlj61 2016-05-24

互动直播的爆发力正在超越当年团购的“百团大战”和刚刚过去的020烧钱大战。随着视频直播整体用户的增长,各大巨头的相继入场以及资本的涌入,互动直播已然势不可挡。市场本身的火爆也让提供技术支撑服务的直播CDN、直播云(IaaS、PaaS、SaaS)以及周边软硬件供应商竞争变得异常残酷。

 

我们看到,CDN带宽价格的下限被不断刷新;数十家CDN服务商同时中标一家直播平台;各家都在加班加点提升服务和交付能力,为第一时间满足稳定观看体验和来自监管、功能等层面的最新需求……

 

直播应用不论是主播还是观众,都要求尽量简单的使用流程,一键发起直播,一键观看直播。高并发、流畅、低延时、高清、全终端兼容已成为不用多说的基本服务能力,实时的流转码、录流、截图、数据统计分析也正在成为必须的功能。在那仅仅摆放了几个按钮的播放器背后,直播应用依靠的是一整套复杂技术系统的支撑,以及无数个程序狗、运维狗们蹉跎的青春。

 

面对前所未有的业务需求挑战和竞争压力,CDN公司迫切想升级直播技术架构,直播平台急需上线业务。那么,建设一套直播CDN、直播平台到底有多难?本文基于观止云耗费近2年时间搭建新一代直播CDN趟过的无数大坑,为你揭秘一个运营级直播平台到底要涉及多少个环节?


1

SRS/BMS是直播CDN,直播平台的首选


直播属于流媒体范畴,直播分发和以往静态CDN(包括HLS直播)分发最本质的区别是直播分发需要专门的流媒体服务器来承载,这是大前提。不论直播CDN、直播平台的架构如何设计,其中最核心、难度最大的毋庸置疑就是流媒体服务器,其性能和稳定性直接决定了整套直播的服务能力和质量。因为,我们当下所面临的已不再是几年前单纯能在互联网上看到直播那么简单了,今天的直播场景发生了翻天覆地的变化,其前所未有的挑战主要包括:


业务场景复杂:推流、播放使用的终端,所在环境的网络,日新月异的功能需求等等都是前所未有的;

分发质量要求高:秒开、低延时、流畅,每个环节那么一个小数点的提升,都对分发质量提出了极高的要求;

上行压力大:PC端的斗鱼、熊猫等,主播同时在线早已超过5000级别,而移动端如映客已经逼近10000大关。数量如此庞大的主播所推送的流式数据,需要流媒体服务器在云端数秒内进行实时处理分发。一个平台的主播数量可以只以1万计,可CDN或视频云的承载规模却需要往几十万级别去规划。一个观众播不了还可以无所谓,但一个主播如果推不了,那也许意味着几千个观众看不了,所以上行保障的难度可想而知,而这部分巨额的上行带宽、中转带宽还基本不收费;

热点峰值时段集中:当下的直播本质上都是“秀场”,翻译一下就是“网络夜总会”,故在每天晚间22点到凌晨2点突然拉起的高出其它时段近10倍的带宽峰值,让就赚着那么一点点复用费的CDN们何其的尴尬。


我们正在设计的,可能是迄今最为困难的分发网络了,以上这些挑战点,都依赖流媒体服务器的功能、性能和稳定性,不论是选择开源还是自研,走错这一步,就基本无下一步可走了。

观止云开源流媒体服务器SRS(Simple RTMP Server),在蓝汛Chiancache、高升CDN、VeryCloud、国外Griffin Labs中部署承载其直播分发业务的数年中,经受了市场考验,凭借其功能强大、轻量易用、特别适合互动直播等诸多特点正受海内外视频从业者的青睐。BMS(Bravo Media Server)是观止云商业版流媒体服务器,BMS代码量是SRS的2倍多,其在SRS的基础上增强了13项大功能,新增了15项大功能,这些增强及新增的功能,火力全瞄准当下的互动直播。

在以往的系列文章中,我们横向对比了当今全球主流的流媒体服务器,本文不再赘述,需要了解的请乘坐以下观景电梯直达。

 

《全民大直播,流媒体选择Nginx是福还是祸?》

点击文末“阅读原文”参阅:《BMS vs SRS详细对比一览》

 

从各种实测数据及运行表现的横向对比中,SRS/BMS在协议支持、核心功能、性能、安装部署、配置运维、系统架构、CDN友好性、代码行数/可读性/可维护性、日志及数据等9大方面来看均比目前应用较多的FMS、Nginx-RTMP等更为出色,可以说在全新的互动直播场景下,SRS/BMS直播CDN、直播云、直播平台流媒体服务器选型的首选。


2

光有SRS/BMS还不够


1CDN是一整套完善的大系统

观止云CTO杨成立同学率队组建直播CDN过程中,经常这么比喻,服务器就像是AK47,而CDN系统却是个核武器。不是一个核弹头就叫核武器,研发原子弹有4000名科学家,数10万工程师,而AK47零头都不到。这也许能形象的说明光有优秀的流媒体服务器,只仅仅具备了整个CDN系统的很小的一部分,要建设一套能够服务百万流级别的CDN分发系统,光有SRS/BMS还不够。


以上是观止云用了近2年时间打造的新一代直播CDN源站结构图,还不包括技术相对简单的采集端和播放端部分,其中:


  • 基本接口(Basic),提供的涉及运营等的基本接口,如计费、监控、调度等基础性接口;

  • 碧池(Bitch),为BMS动态配置子系统,可以从业务系统读取配置,依据更新机制主动更新配置,碧池使用http-api和外部对接,可以支持任何符合条件的配置存储和管理方式;

  • 不卡(Bocar),BMS的源站集群子系统,打通了真正的分布式CDN源站关键环节,使得CDN源站能分布在各地。不卡对外使用http-api,可以对接到符合标准的业务系统,如元数据管理等;请参阅:《你不太了解的观止云分发之二:源站集群》


  • 闪电(Bott),BMS的转码子系统,对接观止云大规模实时转码集群;

  • HLS+,BMS提供的流式HLS功能,具有回源量小、系统简单、排错容易、防盗链、低延迟等优势。请参阅:《手机直播延时直降90%  HLS+横空出世》

  • BIG,BMS大数据子系统,承载整个分发系统可追踪日志和重要的服务数据;

  • HLS-CUP(hls-concurrency-upstream),BMS提供的并发回源技术,解决网络情况不佳时、跨国传输时丢包严重时等等的回源问题;

  • BAR,应用层智能路由,在CDN的多层结构中,多层边缘回源在选择上层服务器时根据整个链路智能回源;

  • DNS,观止云非阻塞DNS;

  • 录制(Record),观止云大规模实时流录制子系统;

  • 时移(Time-shift),观止云直播时移系统;

  • 延时播出(Delay),观止云延时播出子系统;

  • P2P,观止云通用平台P2P分发子系统。请参阅:《大直播时代,P2P才是降低成本的必杀技》


从观止云CDN的结构图中可看出一个完善的运营级直播CDN系统的极度复杂性,举一个实际例子:

非阻塞DNS:这个虽然比较简单,但是对于直播分发效果的影响确是很大。如果服务器回源或者调用接口时是域名,譬如DRM回调客户的API是个域名地址,那么就需要DNS,解析域名到IP地址,是调用gethostbyname实现,这个是有网络IO的,发包——这个做过服务器就知道,会阻塞当前进程。SRS和NGINX都存在这个大坑,然而SRS填这个坑只用了1个工作日,但NGINX要搞定这个就稍微有点难度了。


2CDN需要兼容性和定制

流媒体直播分发与静态CDN除了以上提到的根本性差异外,还有个重大区别,就是各种定制和兼容性。也许就是客户编码器不解析域名;也许就是Ack消息溢出;也许就是时间戳在C3不一致;也许就是AV不单增……这个兼容性单子可以列很长很长,任何一个也许就都有可能导致流媒体彻彻底底的罢工,而不是静态CDN丢失一个图片那么轻松。SRS在列的ISSUES有596个,其中至少有一半是大坑,而BMS的ISSUES的ID已经列到了5296,这个至少是其它CDN相关的流媒体系统10倍的量级。

当下的直播,推流、播放使用的终端千差万别,所在环境的网络良莠不齐,新的业务功能频频出现,在业务环境如此极度复杂的情况下,一个优秀的CDN系统需要拥有较好的兼容性和定制能力,方能保证在残酷竞争中领跑于对手。

 

3CDN要求更快的迭代速度

作为CDN系统中的核心系统,流媒体服务器的更新速度还是非常重要的。以观止云长时间建设CDN平台的经验来看,一个大版本至少有100次线上更新才能比较稳定,观止云的实际更新记录如下图所示,从3.0.49版本开始上线,包括功能和bug线上已经fix了50+。




流媒体的这个特征,意味着CDN系统极其需要团队维护和更新,不断推进整个CDN系统进化。基调监测数据显示,观止云CDN已经超过了大部分友商的技术指标,这是观止云几大子系统初步成型的自然结果,接下来的半年到一年时间,观止云将会给出更满意的答卷。

观止云BMS及其配套系统如Bitch、Bocar、Bott、HLS+等均在合作伙伴又拍云全网部署。除了BMSSRS在高升、verycloud等平台中部署应用,虽然大家CDN系统结构都不太一样,但作为同源CDN系统,SRS在快速适应CDN技术升级和变更方面,都带给了大家不小的惊喜。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多