—— 和人英的程序猿扯一扯の光启说
首先,普及一下项目历史背景
我们的第一个社交平台于 2004 年上线,目标用户群体是德国的饮食男女。从技术上来说,大家最关心的数据可能是每天的在线用户数量,根据数据团队的报告,这个平台在德国区的每日在线用户已经超过 2 万人。自上线以来的十三个年头里,德国用户已接近达饱和状态,而这个平台在国际化发展的路上也已经历了好多次技术革新。
光启兄,最近公司里的技术分享会上经常听到这个新上线的直播系统,和我们说说你的开发心得吧!
心得倒也谈不上,而且开发新系统其实是一个团队合作的过程与成果,我其实只是完成了一小部分的工作。在确认开发需求之后,Service Team 就会帮我们搭建好基层架构,然后 PHP 开发会定义好业务逻辑、前端开发负责塑造基本的用户界面;至于我这里,其实是根据这个新直播系统的开发需求,提供了一套可以允许 Flash 和 HTML5 同时接入服务器的解决方案。(虽说我们是同时支持两种接入协议,可其实是为了等 Flash 正式退出平台的那天做准备。)这次也尤其要感谢 Service Team 的 Fan,在视频处理和方案讨论时提供了大量的技术支持以及经验分享!
Flash 要退出了?
不错,今年 7 月 25 日,在 Adobe 的官方博客上已有声明,大致翻译是“我们将于 2020 年底前停止发布或更新 Flash 播放器,我们鼓励使用更开放的内容格式。”所以,Flash 的时代已经进入黄昏,未来需要更开放的技术,比如 HTML5。就目前的情况来看,许多主流的视频网站已经把用户的默认播放格式切换到了 HTML5,部分因特网浏览器甚至主动屏蔽了 Flash 的加载,而手机端的应用也已经基本不支持 Flash 了。
那我们的新系统有什么亮点呢?
这个新系统主要的功能是发布 HLS 格式的视频(直播),它不仅画面平稳流畅,而且技术延伸性也很强。不过,我个人觉得它最大的特点有两处:
可伸缩性
理论上来说,这个系统在任何浏览器或应用内,可以支持无限数量的在线用户访问。一旦连接的用户超过了服务器的负载,这个系统会自动将新连接用户加入缓冲队列;与此同时,我们可以添加计算机或网络资源。(可以手动添加,也可以使用自动脚本。)
可利用性
新系统使用了云端集群H/A支持技术,并且我们使用的其他技术也都必须保证可以稳定地运行以及自我恢复。系统的另一个特点是,在大部分情况下,我们进行系统更新时,并不需要重启服务,导致用户掉线。
相关技术
· PHP
· Openresty
· Redis
· ffmpeg
· Javascript
· SRS (https://github.com/ossrs/srs)
· Docker