网店

    听云APMCon: 实践直播云性能童话电子琴简谱优化
    时间:2016-12-02 15:15:02  来源:http://www.51center.net/  作者:虎假虎威2代
    理行中国应业盛宴用性能管——用性201能管理大会6中国应(简称APMCon 2016)19于8月日在北京新云南皇冠假日酒店隆重召开18日至。听云APMCon由、oQ极客邦联合主办的作为国内APM领域最具影响力的技术大会和Inf,MC首次举on以办的AP“化与驱动应创新用架构优”为主题,M在致力于国内的成长与发展推动AP。 师何七牛云李石于基于云架构的性能优化专场发表了题为首席布道《优化七牛直实践播云性能》的演讲,直播现场解云服务在各个环节性能监控和优化的实践读雅马哈电子琴示范曲了七牛,流网包括服络电子邮箱地址怎么注册性能优化务端实时,效率客户端和首开时间优化等内容编码解码。 以下为演讲实录: 大家下午好!何李我是来石自七牛的,一下今天跟直播相关的内容大家分享。是做我们七存储的牛一开始,们做后来基了分发于存储我,户的因为我文件能够快速的上传和下载们要让客。我们201接了一些监控摄像头的服务4年年底,未来我们发一个比较常用的场景现直播是,直播然后我云们就做了。底到从20今年6月份14年年,播的我们接客户到很多直,经过这些验证,们正在6月式发布了直播云30号我。因为今天是 APM大会,享一我主要下我们在性能方面是怎么去做优化的跟大家分。们来实际上说是一个完整的解决方案直播对我,包括所以优整个环节化应该是,包括推流端、网络以及播放端。 业务我们先模型是什么样来看一下?流端最下面有一个推,时流中间是网络我们的实,可以理解成CDN,和C但他的DN不太一样网络架构,最右边是播放端,直播大家如接触最多的是右边这块果经常看。时流中间是网络我们的实,这些代表节点,个流这个线的流向路代表一,有调度服务节点,务模这样子型构成了直播解决方案的基本业。括所我们做有这些的事情包,包括推流端推出去,及播到网络放端的分发以。性能今天我相关的东西分享的是,到整性能实个链路际上涉及,包括推流端的性能、网络性能、会涉播放端及到的性能都。 它的我们再内核来看一下,来说对于我们的客户,端的我们提SDK都有供的三个,推流端SDK、K还实时流有播放端网络SD,码和播放端播放相关的SDK就是跟解。 一下这里我七牛相关的业务们简单讲,个存一开始储系统我们有一,分发为了加以及上传下载我们做了内容分发网络速用户的,N相这是存关的东西储和CD,用的后面我计算平台们做了通,储上以及基面做了数据处理平台于对象存,数据以及现平台在做的大。图片因为会或音视频有很多的,了一在这个些深度学习基础上做,进行相当于处理的平台对大数据。然后我们看直播,个解直播实决方案际上是一,DK它包含推流端S、及直播放端播云SDK以,处理会对直播流进行,播就因为我是一个分发通道们知道直,行处对上面理的内容进,制回这些处放理包括录、内容转码的识别处理还有。常见内容识的就是加速别我们最,要功加速是能网络的主。能还然后基需要做一些运营相关的东西于这个可,比如说计费之类的。 或者对于我直播的App开发者来说使用方式是这样的们的客户,己的一般会App有一个自 Server,这三块SDK,推流端SDK、播放云的S端的SDK这是我们刚才介绍的内容DK还有。SeApprver端和DB之外里面除了,跟业还可能务相关的东西需要实现,比如说弹幕、道具、点赞等等,们来这些目实现的前都是我。 的直简单介播业务模型之后绍完七牛,我们我们再目前做一个直播的产品遇到的挑战以及关键指标有哪些来看一下。 者我对于终们的开发者来说端用户或,的指他有几标个关键性。首开时间,你用我们希映客的话就是一点就电子烟品牌排名能开望比如说,以内最好控制在1秒。然后是累计延迟,的时比如我候在这边讲,有人在那边看,不能他整个超过3秒延迟时间,最好是在1秒以内。1秒昨天有以内的延时人分享做,这也是可以做到的,50今天还0毫秒以内的延迟看到做到,什么我待会我们不是这么做的儿会讲为。另外就是低卡顿率,流畅你要让地观看你的视频客户非常,辨率既使是不是太多码率和分。还有就是高可用,竖状我们目CDN做到的前都是用,到冗你的节余点可以做,会不我们这太一样边的网络,一会会介绍。然后就是低成本,的公对于我司或者创业公司来说要自己做直播的话们一个新,是非他的成常重要的本实际上,子就我们不建一个非常大的CDN网络去做这方面的事情可能一下,一种但是我更加低成本的方式去做到同样高可靠们可以用、高可用以及性能、够好速度也能达到足。 的挑再来看战是什么一下我们?一个是实时传输,直播我们知实时性非常重要道所谓的,协议主要体和网络方面现在传输。量的另外就终端用户是他有海,员可比如说能映客会说有2000万用户上次运动,的用瞬间来户了非常多,群效就会造应成一种惊,什么意思呢?点里就是说瞬间来了非常非常多的用户你这个节,节点可能导的所有用户都拥堵了致你整个。转存还有一个是实时,边有我们知一个监管要求道北京这,内容要求把能够存储下来实时直播,保存一定的时间,存储这是需支持的要有海量。端适然后是配多屏多终,这就更加明显,手机比如我都不太一样们每个人,或者电脑,说他对一个的要求就是能实时转码云平台来,面做在编码到比较好的兼容性和解码方。 推流我们先端来看一下,过采输出之集前需要经、处理、编码的过程。的B这里面uffer有一系列,r都这些B是为了做好每个环节的控制uffe。比如说采样的控制,或者我们有音频的采样率需要控制一个视频,的话如果采可以采到比较清晰的音视频样率太高,多了但是他的内容太,的要或者他求很高对于硬件。到处在采样理环节完成之后,们经处理环常说的一些滤镜节就是我、美颜、水印,PU我们一做处理般会用G。再到编码环节,有一编码在个Buffer控制编码的效率推出之前,络反比如我馈之前可能需要降码在收到网、推流,络的降码就带宽或者说网络的质量反馈回来之后是通过网,码的可以实码率时调整编。还有一个是推流,享了昨天听一个客户端的劫持云的人分,常严劫持在重的中国是非,即使没有劫持,个解我们也析没法控制可能对这,智能所以我网络方面做一些特殊的调度们需要在,配合服务端去做。怎么还有热去优化它的推流的效率网情况下,些帧我可能做推流先丢失一。 关环除了这节的优化之外些编码相,个非我们可常重要的模块能还有一,就是QoS,模块质量的实时上报。合自我们做己的模块和第三方的到的是结,调优比如听和报警模块做这个事情云的质量。一个我们给SDK客户会有,他用 们就SDK可以在这里面做很多的事情做的话我,节点比如可进行实时监控以对他的,数以他的推及卡顿次数流失败次,况再通过他结合调度推流的情,流网实时调络整他的推。 要的还有一数据就是离线数据个非常重。据只我们光能对当前某个用户的推流做调优看实时数,的呢但对于整个网络?我们因为C的推流实时网络是不断演化的过程DS或者,些汇我们需总的数据来看要通过一,次数看它总体的卡顿、卡顿时长、均推卡顿率流时长以及它平,平均比如说推了多长时间才推出的一个主播,用性还有他整体的可。还有除了Q一个报障模块oS模块,你卡是说你顿的原因可以查到,SD从ApKp一直到,里面因为他肯定有我们的SDK的App,再到服务端,析报再整理告出一个分。 工作到这儿基本上把推流端相关的优化做的差不多了为止这些,宏观这里面的东西只是比较,细节还有很多,就非比如说常多编码方面,域的都是非东西常专业领。 我们再看服务端,还是看刚才的网络,网络先解释是怎么样的一下这个。收流这里面节点可以通过一系列的线路转发到另外一个节点表示一个,点都这里面是对等的所有的节。这个图表示一个流,个节实际上点到这个节点可以从这,点离只不过用户最近看哪个节,N节这跟传点还是不太一样统的CD,行收这个节流点可以进、分流、转发,到的或者我对流进行处理们后面讲。这是先来看个收流节点一下假设,都是这里面用来做优化的的这两个,是离用户最近的,可以这个流通过线路C直接到这里面过来以后。个节这里面点是坏掉的是假设这,到了这条线路就不能,它可以直接绕过去,一点虽然说延时会大。这样第二条的线路也是,结构就是一个网状的。整个这样子网络是去中心化的网络就能做到,多的比如我海外用户们现在很,购物有些做的跨境电商,点就我们要非常方便上海外节,本或他可以者新加坡上一个节点就可以了直接在日,拉流可以通到国内播过CDN。 然后是无状态化,这是非常重要的。负责这里面一些无状态的事情的节点只,之后比如你我对你的流进行分发收流过来,如果这个节点坏了,我就再找一条线路,的状它不需态要维持它,因为之所以实际上它是有一个多活的调度中心做这个事情不需要是,哪条比如说最优它的线路,以实哪个节时上报到调度中心点坏了可。 第三点是智能调度,能够智能传在全局找一个当前最优的路径输就是它,一个比如我5秒一次的探活以及数据的连接性们可以做,这里面也有讲到,监控通过我中心去做节点的探活以及连通性们自己的。要的还有一点非常重,之后就是一路流过来,个节比如说点到下一个节点我在第一,都会每经过统计增率一个节点 FPS,不是看看当有下降了前的增率,化太一般码大率不会变,变大但是增率可能会。率对这样子能整个链路的质量进行监控实时的增,客户比如北京连接的,说他卡了,是哪我们知一个边缘节点道他连的,从哪能知道来这个流是,速定就能比位问题较好的快。这样汇总的的数据也是,看到能通过当前选的点是不是有效汇总数据,因为在 面选CDN物理节点非常重要的行业里,些异我们可常的数据来尽快调整这些选点以通过一。 网络讲完之后,重要服务端的内容就是传输协议还有一个。用的我们看几个传输协议有RTMP下目前常,秒以能控制内在1到3;控制然后是在10秒HLS能,可能会超过10秒,到的但是我大概是6到7秒以内们现在做,TTHLSP的协议是基于H;然后HTTP-HTFLVTP的协议也是基于,到3能做到秒内基本上1。 时性如果我们要求实,MP一般会或者HTTP选择RT-FLV,较高能满足的场景互动性比。好的但如果话做得比较,性的它们需支持要有播放,很难做成通用的,对播如果要放进行定制做的话要。用的HLS是比较通,TT因为他P协议是基于H,是基数据流于传统的CDN的分发都,切片它是一个文件的,切成很小的片,他所再不断有的文件的去更新,的C这样子DN兼容性非常好就对已有,的C直接可DN的网络以用已有,播的但是它是单向广,互动性比较低,延时也相对比较大。 议之其实除外还可以定制协议了这些协,MP比如我是基于TCP的们的RT,的延可能会迟带来一定,DB比如可来做以基于U,常低我们可的延迟以做到非,比如500毫秒。没有但是为这么做什么我们?提供对于我商来说们云服务,们自我觉得己去定制的话一个是我,协议是不够健壮的。B都TCB是经过几十年的时间经验或者UD,我们再去定制,什么如果万问题我们可能需要不断地填坑一以后有。另外,是我现在所们自己建的节点有的无论,节点或者是做分发都是基于HTTP协议用第三方。大的当你的时候你可以自己定制协议用户量不,过1比如说00人的教室直播的话你可以自己定制场景不超。户非但是如常多果你的用,自己我们再定制的协议去用一个,事情这是非常危险的。么F所以这acebook这种公司也是为什,定制他们可的协议能在尝试,是在但是目用RTMB前他们还,虽然是很老的协议,但是兼容性非常好。还是无论是基于P2P做传输基于定制,实际上都是可行的,个要但是我对所有客户负责的公司们作为一,在去可能不做定制太适合现。 外一在服务个重要的环节就是转码端还有另,节点这个图是对等的里面每个,后在你的数这里面分发到下一个节点过程中据过来之,进行每个节转码点都可以。两个这张图转码节点中我给了,是在第一个收流的时候转码节点,用户第二个端的转码是在靠近。 种情为什么况呢存在这两?对于RTMP来说,般来一个R说原始码率不会小于末端码率的TMP一,把一我一般个500K码率的视频转成不太可能 1M的视频,MP所以如传输的话我可能只需要在收流节点转好果是RT,发环之后在节就可以降低他的转发带宽内部的转。S播如果是放的就可以在边缘节点里面去做基于HL,为什么呢?里面因为如转好之后果是在这,是基他里面于HTTP来传输效率就降低了传输的都,端再所以我转就可以了靠近用户,需要的时候再转,个优这是我化们做的一。 做到为什么每个节点都可以进行转码呢我们能够?一个我刚才无状态的节点说到它是,是对比如说文件进行处理的过程转码它只,这些不需要状态自己维持,流分转完之发到下一个节点就可以了后把这个。些比实际上较新的技术可以做到这些的现在有一,ck比如说er容器的虚拟化基于Do,入了我这里转码的程序面已经存,这里你过来面启动就可以我直接在,点里也就是面本身部了一个虚拟化的计算平台说这个节,启动我直接这个程序可以秒级,够我如果这可以把转码程序调度到另外一个节点里资源不,便的调度也是非常方。 们知对于存道一个流需要对它进行存下来储来说我,可能会回看。存下在社交来的很少直播当中,求也但是为有需要保存下来的了监管需。但是在某些场景,比如教育直播,精品可能需讲师的内容存下来回看要把一些,实时那就需转码或者存储的需求要有一个,可以对存储在靠近存储的机房去转来说我们,可以对于其根据需要来转他的我们。这里面从网络、绍的转码以传输协议及前面介,务端基本上的一些优化覆盖了服。 最后就是播放端,它是离用户最近的,就是最后一公里。首先就是首开,能多用户点快给到数据进去之后,会在首开延服务端做一个缓存迟一般都,能直数据到接解码达客户端,是基这个目于Flash的播放器前做到的,能做到0.5秒。迟的如果消话会有一个做播放控制的缓存除累计延,开延这个缓迟来说肯定越小越好存对于首,网络但是因可能不太一定为用户的,有W比如我i在这里面-Fi,3G出去之或4G了后就要用,换的特别是时候差距比较大在网络切,就会有网络抖动,个网我们为络抖动带来的影响了消除这,些B会在播uffer放端做一,r会这些B影响他的首开时间uffe,如何很大的平衡这两个Buffer的大小优化就是。还有一个就是丢帧,关键帧肯定不能丢,的全因为包量信息含了视频,B帧是可以丢的,是尽我们的量在这个过程当中使用B帧一个优化,效率B帧虽是最高的然说压缩,是向但是因后参考的为它其实,仅要解码的参考前面那个帧时候它不,过来并且要的帧参考后面,据过也就是来到能正常播放可能需要等好几帧才能播说这个数,大的所以会延迟带来比较,非常除非是好或者说解码性能非常好的情况下那种网络,荐用要不然其实不推,去掉直接可以把B帧。化就然后另是自适应码率外一个优,在自动播放的时候,站会比如优自动帮你降码率酷这种网,可以做到自适应。 HT重点看TP的测试性码率是怎么做的一下基于。个请首先播求到服务端get一份数据放端发一,两种我们在码率的数据A和B服务端有,率是分别代不一样表它的码,好存我们会在服务端先把它切,户端然后根的网络来取据你的客,的数你要请据求什么样,给你然后再把它分发。 我们看一下,务端首先播发请求放端向服,这个然后服A码率的数据通过HTTP传到客户端务端会把。单的这是一模型个非常简,要做到这个样子,事情其实服比较少务端做的,多个服务端码率的视频文件存下来就可以了把它切成。但是,做很在客户多事情端还需要,户端我们来需要做哪些事情看一下客? 宽预首先它估模块有一个带,带宽就是当多大前用户的,率的他能承视频拉取受多大码,估结然后通果去选择相应的码率过这个预,率是下一个多大片断的码,时的因为他调整当前用户播放的码率经常能实。有下选择码载调度模块做调度率之后再,过H基于这TTP接口去服务端拉数据了个就能通,端去把数据播放拉给播放,当前然后可的播放效果再把数据反馈回去以根据它,片断比如说我拉一个,间是拉过去可以计算的花多少时,次能然后再不能再拉这么大的预估下一,更大或者说的能不能拉,适应这就是的原理播放端自,HT但是这TP的个是基于,是类其实R似的TMP也。制它有三大的片段的拉取模块去控,过实另外一时的反馈去实时调整码率个就是通,端需但前提要有存这么多的数据是你服务,怎么做到的?实时就是我转码刚才说的。 放相在播放关的模块之外端除了播,似的还有跟QoS模块推流端类,中的负责对性能进行监控播放过程,基于当然这第三方做个也可以,控调比如说优和报警听云的监。西呢首先看有哪些东?就是首开时间,我们能做到0.5秒,它是一个平均值,有些可能是0.1秒,有些可能超过1秒,这是有可能的。这个然后我进行筛选们需要对,再统计出来。次数然后播放的失败,失败到底是了导致不能播进行推流,身的还是因网络失败了为用户本,些数用户没据不能上报回来网的话这。还有卡顿次数,多长播放过时间程中卡了,卡的次数多少,据之除了这外还有离线数据个实时数,综合看汇总评估整个推流和播放的次数的报告来,的效其实主果是怎么样的以及我们用户的网络分布大致是怎么样的要是网络。 还有除了Q个报送模块oS模块,这个是可选的,用户在播报过程,上报我们可回来进行分析以把数据,K还无论是是网络都是可以的优化SD。 编 辑:孔垂帅
中小企业电子商务促进中心 版权所有
联系:QQ 3301665335
粤ICP备05085609号-1