SRS是个开源流媒体服务器,BMS(目前已停止研发)是在SRS基础上做的一个cdn用的服务器,NGINX是一个web服务器,也有nginx-rtmp模块支持流媒体。
我很久就想说说服务器和CDN的区别,为何很了不起的服务器譬如FMS、WOWZA并没有在CDN中一统江湖?而是给了NGINX空子可以钻,大部分都是NGINX或APACHE在cdn中跑,还有SRS什么事情?
这个道理其实很简单,服务器和系统之间有个鸿沟,可惜谁也听不懂这个是什么,也讲不清楚。知道我们把服务器完善并在cdn中上线运营,才知道有这么多变化。请看SRS要在CDN中运营要做什么事情:
这是历时2年左右的修改,已经看不出什么地方是SRS了,有木有?这八大系统,全是cdn流媒体相关的业务,也就是其他服务器也逃不过要做这些的。譬如非阻塞DNS、多源站、配置、大数据分析、智能路由、转码、基本接口(计费)等,还不包括收录、时移、延播,这些我们还在对接中。
以非阻塞DNS为例,这个比较简单,但是影响确实大大的有。如果服务器回源或者调用接口时是域名,譬如DRM回调客户的API是个域名地址,那么就需要DNS,解析域名到ip地址,是调用gethostbyname实现,这个是有网络IO的,发包——这个做过服务器就知道,要阻塞当前进程的哦。这个大坑对于SRS和NGINX都管用,请一起填吧。相对而言,SRS填这个我们只用了1工作日,没有加班;NGINX要填这个有点点难度的。
臣妾好有一比,服务器充其量是个AK47,而cdn系统就像个核武器,核武器不是一个弹头就是核武器。据说研发原子弹的有4000名科学家,10万工程师,而AK47估计零头都不到吧。这是为啥wowza和fms都没法在cdn立足,服务器和CDN完全不是一回事。
流媒体CDN和WEB-CDN的一个显著的差异,就是各种定制和兼容性,也许就是对方编码器不解析域名、也许就是Ack消息溢出、也许就是时间戳在C3不一致、也许就是AV不单增,这个兼容性单子可以列很长很长。。。也许就是那么一丢丢差异,就会导致流媒体彻底罢工,是的,彻彻底底的罢工。而不是CDN丢失一个图片而已那么轻松。SRS的ISSUES 596个,至少有一半是大坑,说起来都是老泪纵横,而BMS的ISSUES的id到了5296,这个是CDN相关的流媒体系统,至少是10倍量级。
且不论服务器在流媒体的差异,服务器的那么一些问题就显得不那么重要了。作为流媒体系统中一个基础服务,更新的速度还是非常重要的。一般我们的经验是一个大版本至少有100次线上更新才能比较稳定,请看实际的情况,BMS3.0的更新记录:
从3.0.49开始上线,就已经fix了49个bug了;线上差不多fix了50个bug,包括功能和bug。
BMS(目前已经停止研发)的发布周期就是半年,这是BMS3的记录,BMS2和BMS4的就不列出来了。流媒体的这个特征,意味着没有团队维护和更新,不断的推进整个cdn系统进化,那只能等着新的系统超越了。据说BMS3在基调的监测指标,已经超过了你所知道的流媒体cdn的指标,不过这只是八大系统初步成型的一个自然结果;接下来的半年到一年,将会给出更满意的答卷。
除了BMS,SRS还在高升和verycloud中部署,大家cdn的结构都不太一样,不过相同的是SRS已经不是那个SRS,在直播的大潮流之下,SRS系列的基础结构,可以更快的适应cdn系统的变更和要求,给大家带来更多的惊喜——以后接入cdn时,得问问是否是SRS提供的服务,流媒体必须用SRS才有前途。
BMS就是从SRS3基础上做的一个商业版本,配合观止其他的流媒体系统提供CDN服务。观止的目标是做CDN或者云服务,目前观止是和又拍在合作提供流媒体CDN;没有一个CDN会同时卖服务,又卖服务器软件,所以我个人敢肯定BMS肯定是SRS的一个分支而已,观止关闭SRS的目标不是为了卖BMS,而是没有精力做SRS(或者说作为服务器SRS可以打60分了,够用就好了)。云服务才是更合适的,试想想卖那么多服务器软件如何更新和打补丁?Amazon和Wowza谁赚钱?
最后,解释下为何用人月神话这张图,人月神话的核心观点的前提是软件和系统的差异,只有复杂系统才有人月神话的现象。