对于爱好观看直播的用户来说,能够如丝般顺滑地浏览视频是一大极致享受。但实际情况是,当某时段大量用户数据涌入(如观看人数上升,弹幕消息爆发等),若并发结构没有优化好,我们很难不遇到画面卡顿的情况。所以今天拓幻科技来分享一下,在直播系统源码开发过程中,如何正确处理高并发带来的这些卡顿问题呢?
一、防盗链处理
如果是网页直播间,当前站点没有做防盗链的话,就很容易遭受恶意请求。而过多的恶意请求,会对本身流量就比较大的直播间造成很大负担。比如说有A、B两个直播网站,A站享用了B站的资源,页面嵌入了B站的图片、JS、CSS。A站并不关心B站会消耗怎样的流量,但是对于B站来说,如果调用了B站的图片、JS、CSS。在用户访问A站的时候,就会对B站做一些HTTP请求,从而走B站的流量和带宽,同时也侵犯了B站的一些版权问题。
说到这,在对自家的直播网站做流量优化时,也需要考虑减少HTTP请求,比如说把CSS、JS、图片进行合并。这样某些网页文件的容量会稍微大一些,但是便减少了请求次数。
二、CDN加速
这可以说是直播系统源码开发过程中的标配了,当然,就算是普通的静态页,不使用CDN的话,也会非常卡顿。在这就简单说下原理吧:用更加通俗的话来讲,我们可以把系统的一些前端文件、前端资源放进CDN当中,当用户来访问页面时,可以通过CDN就近访问,并且从一定意义上解决带宽不够用的问题。
三、服务端优化
现在大多数直播源码都是用php来编写的,所以可以针对此做一些页面静态化处理,把一些数据直接缓存成HTML代码。对减少本地CPU的负载和服务器压力都会很有效果。但是页面静态化有一些过期时间,不可能永远显示静态数据,这样创建一些动态内容就没有意义了。但是对一些实时性比较强的内容来说,做静态化就不是很合理,这时我们就需要穿透静态化,对访问进程做多线程的异步处理,从而提升请求的响应速度。
四、数据库优化
大多数网页都可以做Memcache缓存,但是对于直播源码开发来说,做的最多的还是Redis和mysql缓存。但当我们绕过这些缓存进行真实数据访问时,为了提高访问效率,可以借助一些工具,像mycat对系统的数据表做一些拆分工作,如垂直或水平拆分,或者做数据的读写分离等。
不难看出,在直播源码开发过程中,针对卡顿的处理,其实和大部分网页的访问优化过程没有太多不同之处。
原文地址:https://blog.51cto.com/14528075/2459203