云巴成立于2013年,其創(chuàng)始人兼CEO張虎作為連續(xù)創(chuàng)業(yè)者,在實時消息技術(shù)服務(wù)領(lǐng)域積累了大量經(jīng)驗。云巴提供的技術(shù)服務(wù)應(yīng)用場景包括即時聊天、推送通知、視頻彈幕及遠(yuǎn)程控制智能硬件等,在云巴官網(wǎng)()上可以看到涉及 App、物聯(lián)網(wǎng)等用戶案例。
彈幕視頻最早產(chǎn)生于日本,得益于Flash技術(shù)而誕生的彈幕播放器。大量彈幕的瞬間發(fā)送對服務(wù)器也提出了很高的要求,尤其是視頻直播,相對于普通視頻網(wǎng)站而言,要實現(xiàn)彈幕的難度更高。
2016年以來,直播市場變得異?;馃?,不少創(chuàng)業(yè)者投身于直播領(lǐng)域中。創(chuàng)業(yè)者如果想搭建一個視頻直播平臺,需要特別注意視頻直播的核心功能互動。面對市場局勢的變化,張虎以其敏銳的洞察力及準(zhǔn)確的決策力,將視頻直播納入云巴的業(yè)務(wù)范疇,為直播平臺提供更穩(wěn)定實時的視頻彈幕技術(shù)。
發(fā)送彈幕是手機(jī)直播中最常見的交互方式,此外,一些比較有特色的手機(jī)直播平臺還增加了和主播互動的游戲功能。交互系統(tǒng)涉及消息的實時性和穩(wěn)定性,在技術(shù)上大多是使用實時通信的功能來實現(xiàn)的。
在同時在線人數(shù)比較多的聊天室里,彈幕消息量十分巨大,因此滿屏的彈幕給服務(wù)器帶來巨大沖擊的同時亦影響了觀眾的用戶體驗。為了緩解服務(wù)器的壓力,針對視頻直播中的彈幕,直播平臺在產(chǎn)品策略上可以做必要的優(yōu)化,比如限制發(fā)送消息的頻率或每條消息發(fā)送對象的數(shù)量上限等。
聊天室和群聊的功能類似,但聊天室的消息不會分發(fā)給不在線的用戶,視頻直播彈幕的實時性也保證了用戶只有進(jìn)入房間后才能查看彈幕消息和房間成員信息。直播平臺既要面對復(fù)雜多變的網(wǎng)絡(luò)狀況,又要根據(jù)用戶位置就近選擇對應(yīng)運(yùn)營商的單線機(jī)房,接入彈幕消息服務(wù),讓彈幕更及時。
同時,禮物系統(tǒng)已是絕大多數(shù)手機(jī)直播平臺的標(biāo)配,它是這些直播平臺主要的收入來源。在手機(jī)直播平臺上,我們常??梢砸姷酵梁烂氚?、土豪對刷的情景。此外,明星直播一場的禮物收入高達(dá)幾十萬是常見的事,年入千萬的網(wǎng)紅主播也不少,可見國內(nèi)有禮物消費(fèi)習(xí)慣的土豪還不少。另一方面,送禮物的方式增強(qiáng)了用戶和主播之間的互動交流,也是主播依賴平臺的最主要原因。
對于開發(fā)者而言,聊天室看似只是直播的一個小功能,但是對消息處理做得不好,就將直接導(dǎo)致閃退、卡頓等問題,尤其是在用戶消息并發(fā)量較大的一個聊天室中。因為禮物、獻(xiàn)花、打賞、文字、圖片及語音等都是通過消息傳輸實現(xiàn)的,在這種高并發(fā)的場景下對實時消息的能力要求極高。
首先是實時性。彈幕的特點在于實現(xiàn)了主播與粉絲之間的實時交流,以及粉絲之間的同步交流,粉絲可以對視頻的內(nèi)容,如主播當(dāng)下所說的話語發(fā)表針對性意見,因而彈幕對反饋速度有極高的要求。
其次是穩(wěn)定性。彈幕的評論往往有上百人同時發(fā)送,直播間也有可能出現(xiàn)瞬間千人甚至萬人量級的用戶涌入。同時還會有觀眾在觀看直播時購買虛擬道具打賞給主播,有獎競猜環(huán)節(jié)的互動等等。如果沒有辦法維持一個穩(wěn)定的彈幕環(huán)境,那么觀眾很有可能會失去直播本身以外的互動樂趣。
最后是運(yùn)營成本,彈幕的實現(xiàn)其實相當(dāng)于一個雙向?qū)崟r通信的過程。傳統(tǒng)實現(xiàn)這一過程,有很高的時間成本、開發(fā)投入、運(yùn)維成本等,這意味著前期高昂的運(yùn)營成本會對團(tuán)隊造成一定的壓力。
受限于資金、技術(shù)和后端維護(hù)等,越來越多的開發(fā)團(tuán)隊希望采用第三方技術(shù)方案,不僅可以提高團(tuán)隊的開發(fā)效率,還能夠大幅削減團(tuán)隊初期的開發(fā)成本。
“想要開發(fā)出多人同時在線的視頻直播軟件,就必然要實現(xiàn)一個高可用性、低延遲性、強(qiáng)穩(wěn)定性的實時高并發(fā)的通信場景?!睆埢⒄f,“目前市面上并無第三方視頻彈幕技術(shù)供應(yīng)商,云巴免費(fèi)為用戶提供每月百萬次的 API 調(diào)用,開發(fā)者可以投入更多精力在業(yè)務(wù)上,而不用操心底層實現(xiàn)?!?
使用云巴的實時通信服務(wù),即可快速解決直播過程中的速度與穩(wěn)定性問題,以及大量用戶同時在線的實時互動問題,例如發(fā)送彈幕、贊等,即要實現(xiàn)一個高可用性、低延遲性及強(qiáng)穩(wěn)定性的實時高并發(fā)通信場景。
直播聊天室無人數(shù)上限;支持消息分級,按照業(yè)務(wù)邏輯定義消息分發(fā)和忽略的優(yōu)先級;穩(wěn)定、實時的消息并發(fā)能力;消息自定義,輕松實現(xiàn)獻(xiàn)花、打賞、紅包及點贊等直播平臺的基本運(yùn)營功能。
借助云巴實時消息服務(wù)搭建的視頻直播軟件,用戶即時互動的穩(wěn)定性和實時性將大大提高。例如在視頻直播的過程中,用戶發(fā)送的彈幕以及給主播發(fā)送的禮物、贊等信息指令都可以控制在毫秒級別的延遲之內(nèi),實現(xiàn)良好的用戶體驗。
和彈幕技術(shù)一樣,手機(jī)App、智能硬件,都可以通過云巴系統(tǒng)進(jìn)行數(shù)千萬的實時消息通信。如何為所有的平臺提供實時、可靠、高效的服務(wù)?
第一是協(xié)議的選擇。傳統(tǒng)的技術(shù)團(tuán)隊會使用 XMPP 的原型來搭建,但 XMPP 的網(wǎng)絡(luò)流量大,編碼重,在移動互聯(lián)網(wǎng)的場景下,交互次數(shù)多,延遲也越大。因而,云巴一開始就采用了開放的二進(jìn)制協(xié)議 MQTT 。MQTT 協(xié)議輕量小巧,開源資源多,擴(kuò)展方便,而且 Pub/Sub 的編程模型可以給用戶提供更靈活的業(yè)務(wù)組織模式,非常適合面向物聯(lián)網(wǎng)實時通信的場景。
“云巴所開發(fā)的系統(tǒng)基于功耗低、延時短的 MQTT 物聯(lián)網(wǎng)協(xié)議,天然適應(yīng)物聯(lián)網(wǎng)應(yīng)用環(huán)境。系統(tǒng)穩(wěn)定性強(qiáng),能夠在大規(guī)模并發(fā)通信的同時依然保證高實時性?!睆埢⒄f。
經(jīng)十幾個大版本的更迭之后,云巴擴(kuò)展了標(biāo)準(zhǔn) MQTT 協(xié)議,使之支持海量設(shè)備和雙向通訊,并支持 WebSocket / Socket.io 協(xié)議,現(xiàn)如今已支持并開源了目前幾乎所有主流平臺的 SDK。
第二是架構(gòu)設(shè)計。首先要考慮彈性擴(kuò)容的問題。容量可以通過添加服務(wù)器擴(kuò)大,并且能在不中斷業(yè)務(wù)的前提下在線擴(kuò)容。
考慮到系統(tǒng)要長期不間斷運(yùn)行,支持在線替換業(yè)務(wù)邏輯也非常重要。這樣之后修復(fù) bug 、升級業(yè)務(wù)邏輯,都不會中斷業(yè)務(wù)。 同時,架構(gòu)還要方便自動化部署、運(yùn)維和業(yè)務(wù)監(jiān)控等。
第三是編程語言。選取什么樣的編程語言主要看業(yè)務(wù)的類型。實時的消息系統(tǒng)有如下幾個特點:維持大量長連接;請求并發(fā)量大;業(yè)務(wù)邏輯相對簡單。
現(xiàn)在的產(chǎn)品(云巴)里主要采用 Erlang/OTP。使用 Erlang 語言編寫的云巴實時通信云服務(wù)可以支撐起高并發(fā)信息量的通信過程,保障彈幕發(fā)送瞬時送達(dá)、即時顯示。目前,云巴面對國內(nèi)網(wǎng)絡(luò)做到了60毫秒以內(nèi)的延遲。
云巴還將方向瞄向物聯(lián)網(wǎng),如智能穿戴設(shè)備、智能家居等領(lǐng)域,對比移動應(yīng)用,智能設(shè)備開發(fā)對消息延遲更加敏感,對流量功耗上要求更高。而智能制造商不一定具備后端系統(tǒng)的開發(fā)能力。面對逐漸增長的場景和海量數(shù)據(jù)請求,降低通信延遲、保證推送穩(wěn)定等就成為了云巴的主要任務(wù)。
“很多產(chǎn)品的后端開發(fā)是相似的,我認(rèn)為開發(fā)者不需要每次 re-invent the wheel。我們團(tuán)隊做的就是提煉出開發(fā)者在后端開發(fā)中的共性需求,從而研發(fā)相應(yīng)的服務(wù)和產(chǎn)品,幫助開發(fā)者們縮短產(chǎn)品開發(fā)周期、減少前期開發(fā)投入和后期運(yùn)營成本?!睆埢⒄f。
因此,保證產(chǎn)品的實時性、穩(wěn)定性,一直以來都是云巴的工作重心和核心競爭力。