云巴成立于2013年,其创始人兼CEO张虎作为连续创业者,在实时消息技术服务领域积累了大量经验。云巴提供的技术服务应用场景包括即时聊天、推送通知、视频弹幕及远程控制智能硬件等,在云巴官网()上可以看到涉及 App、物联网等用户案例。
弹幕视频最早产生于日本,得益于Flash技术而诞生的弹幕播放器。大量弹幕的瞬间发送对服务器也提出了很高的要求,尤其是视频直播,相对于普通视频网站而言,要实现弹幕的难度更高。
2016年以来,直播市场变得异常火热,不少创业者投身于直播领域中。创业者如果想搭建一个视频直播平台,需要特别注意视频直播的核心功能互动。面对市场局势的变化,张虎以其敏锐的洞察力及准确的决策力,将视频直播纳入云巴的业务范畴,为直播平台提供更稳定实时的视频弹幕技术。
发送弹幕是手机直播中最常见的交互方式,此外,一些比较有特色的手机直播平台还增加了和主播互动的游戏功能。交互系统涉及消息的实时性和稳定性,在技术上大多是使用实时通信的功能来实现的。
在同时在线人数比较多的聊天室里,弹幕消息量十分巨大,因此满屏的弹幕给服务器带来巨大冲击的同时亦影响了观众的用户体验。为了缓解服务器的压力,针对视频直播中的弹幕,直播平台在产品策略上可以做必要的优化,比如限制发送消息的频率或每条消息发送对象的数量上限等。
聊天室和群聊的功能类似,但聊天室的消息不会分发给不在线的用户,视频直播弹幕的实时性也保证了用户只有进入房间后才能查看弹幕消息和房间成员信息。直播平台既要面对复杂多变的网络状况,又要根据用户位置就近选择对应运营商的单线机房,接入弹幕消息服务,让弹幕更及时。
同时,礼物系统已是绝大多数手机直播平台的标配,它是这些直播平台主要的收入来源。在手机直播平台上,我们常常可以见到土豪秒榜、土豪对刷的情景。此外,明星直播一场的礼物收入高达几十万是常见的事,年入千万的网红主播也不少,可见国内有礼物消费习惯的土豪还不少。另一方面,送礼物的方式增强了用户和主播之间的互动交流,也是主播依赖平台的最主要原因。
对于开发者而言,聊天室看似只是直播的一个小功能,但是对消息处理做得不好,就将直接导致闪退、卡顿等问题,尤其是在用户消息并发量较大的一个聊天室中。因为礼物、献花、打赏、文字、图片及语音等都是通过消息传输实现的,在这种高并发的场景下对实时消息的能力要求极高。
首先是实时性。弹幕的特点在于实现了主播与粉丝之间的实时交流,以及粉丝之间的同步交流,粉丝可以对视频的内容,如主播当下所说的话语发表针对性意见,因而弹幕对反馈速度有极高的要求。
其次是稳定性。弹幕的评论往往有上百人同时发送,直播间也有可能出现瞬间千人甚至万人量级的用户涌入。同时还会有观众在观看直播时购买虚拟道具打赏给主播,有奖竞猜环节的互动等等。如果没有办法维持一个稳定的弹幕环境,那么观众很有可能会失去直播本身以外的互动乐趣。
最后是运营成本,弹幕的实现其实相当于一个双向实时通信的过程。传统实现这一过程,有很高的时间成本、开发投入、运维成本等,这意味着前期高昂的运营成本会对团队造成一定的压力。
受限于资金、技术和后端维护等,越来越多的开发团队希望采用第三方技术方案,不仅可以提高团队的开发效率,还能够大幅削减团队初期的开发成本。
“想要开发出多人同时在线的视频直播软件,就必然要实现一个高可用性、低延迟性、强稳定性的实时高并发的通信场景。”张虎说,“目前市面上并无第三方视频弹幕技术供应商,云巴免费为用户提供每月百万次的 API 调用,开发者可以投入更多精力在业务上,而不用操心底层实现。”
使用云巴的实时通信服务,即可快速解决直播过程中的速度与稳定性问题,以及大量用户同时在线的实时互动问题,例如发送弹幕、赞等,即要实现一个高可用性、低延迟性及强稳定性的实时高并发通信场景。
直播聊天室无人数上限;支持消息分级,按照业务逻辑定义消息分发和忽略的优先级;稳定、实时的消息并发能力;消息自定义,轻松实现献花、打赏、红包及点赞等直播平台的基本运营功能。
借助云巴实时消息服务搭建的视频直播软件,用户即时互动的稳定性和实时性将大大提高。例如在视频直播的过程中,用户发送的弹幕以及给主播发送的礼物、赞等信息指令都可以控制在毫秒级别的延迟之内,实现良好的用户体验。
和弹幕技术一样,手机App、智能硬件,都可以通过云巴系统进行数千万的实时消息通信。如何为所有的平台提供实时、可靠、高效的服务?
第一是协议的选择。传统的技术团队会使用 XMPP 的原型来搭建,但 XMPP 的网络流量大,编码重,在移动互联网的场景下,交互次数多,延迟也越大。因而,云巴一开始就采用了开放的二进制协议 MQTT 。MQTT 协议轻量小巧,开源资源多,扩展方便,而且 Pub/Sub 的编程模型可以给用户提供更灵活的业务组织模式,非常适合面向物联网实时通信的场景。
“云巴所开发的系统基于功耗低、延时短的 MQTT 物联网协议,天然适应物联网应用环境。系统稳定性强,能够在大规模并发通信的同时依然保证高实时性。”张虎说。
经十几个大版本的更迭之后,云巴扩展了标准 MQTT 协议,使之支持海量设备和双向通讯,并支持 WebSocket / Socket.io 协议,现如今已支持并开源了目前几乎所有主流平台的 SDK。
第二是架构设计。首先要考虑弹性扩容的问题。容量可以通过添加服务器扩大,并且能在不中断业务的前提下在线扩容。
考虑到系统要长期不间断运行,支持在线替换业务逻辑也非常重要。这样之后修复 bug 、升级业务逻辑,都不会中断业务。 同时,架构还要方便自动化部署、运维和业务监控等。
第三是编程语言。选取什么样的编程语言主要看业务的类型。实时的消息系统有如下几个特点:维持大量长连接;请求并发量大;业务逻辑相对简单。
现在的产品(云巴)里主要采用 Erlang/OTP。使用 Erlang 语言编写的云巴实时通信云服务可以支撑起高并发信息量的通信过程,保障弹幕发送瞬时送达、即时显示。目前,云巴面对国内网络做到了60毫秒以内的延迟。
云巴还将方向瞄向物联网,如智能穿戴设备、智能家居等领域,对比移动应用,智能设备开发对消息延迟更加敏感,对流量功耗上要求更高。而智能制造商不一定具备后端系统的开发能力。面对逐渐增长的场景和海量数据请求,降低通信延迟、保证推送稳定等就成为了云巴的主要任务。
“很多产品的后端开发是相似的,我认为开发者不需要每次 re-invent the wheel。我们团队做的就是提炼出开发者在后端开发中的共性需求,从而研发相应的服务和产品,帮助开发者们缩短产品开发周期、减少前期开发投入和后期运营成本。”张虎说。
因此,保证产品的实时性、稳定性,一直以来都是云巴的工作重心和核心竞争力。