沈衛(wèi)魏
(上海電力大學(xué)經(jīng)濟(jì)與管理學(xué)院 上海 200090)
語音平臺發(fā)展至今,從即時(shí)多人語音的需求只是幾人的小組式對話,發(fā)展到幾百上千人的頻道娛樂,再到如今的萬人大頻道,不僅僅收益并推動(dòng)著技術(shù)的的不斷完善和發(fā)展,更看到語音平臺擁有的巨大的社會需求和不可限量發(fā)展?jié)撃?。本文對基于多多語音平臺的語音平臺服務(wù)技術(shù)進(jìn)行研究分析。
多多語音平臺成立初期使用的是DOLBY引擎,在不斷探索更適合自己語音引擎研發(fā)道路,已經(jīng)在2012年中期完成了自主研發(fā)引擎的部署和運(yùn)營。該款自主研發(fā)VOIP語音引擎,不但將單個(gè)語音服務(wù)器承載的人數(shù)從使用DOLBY引擎時(shí)的3000人,提高到了15000人,而且在該引擎對環(huán)境噪音和冗余數(shù)據(jù)的處理,多多語音平臺通話質(zhì)量遠(yuǎn)超其它同類語音產(chǎn)品。
(1)架構(gòu)一:剛上線時(shí)的多多服務(wù)器
多多剛上線時(shí)的服務(wù)器架構(gòu)分為兩個(gè)系統(tǒng):即時(shí)通信(IM)和語音系統(tǒng)。起初的服務(wù)器非常簡單,但是與此同時(shí)也清晰的表明了多多發(fā)展的兩根主線。IM系統(tǒng)為用戶提供基本的文字聊天、群組創(chuàng)建、搭建社交平臺。語音系統(tǒng)為用戶提供雙人和多人語音服務(wù)。此時(shí)的架構(gòu)對于分布式、高并發(fā)訪問、不停機(jī)技術(shù)都還非常遙遠(yuǎn)。這是多多的第一個(gè)腳印,也是多多的起點(diǎn),就在這個(gè)基礎(chǔ)上經(jīng)過開發(fā)人員和整個(gè)項(xiàng)目的堅(jiān)持不懈的努力,突破一個(gè)個(gè)技術(shù)難關(guān),才有了后續(xù)日臻完善的服務(wù)器架構(gòu)和忠實(shí)的用戶群。圖1為剛上線時(shí)多多的服務(wù)器架構(gòu)。
圖1 剛上線時(shí)多多的服務(wù)器架構(gòu)
(2)架構(gòu)二:大容量支持—多級緩存
圖2展示了多多為支撐大容量數(shù)據(jù)使用多級緩存的結(jié)構(gòu):在原有的架構(gòu)中,應(yīng)用層通過RecordServer來對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行讀寫,但是當(dāng)用戶數(shù)量上升后,數(shù)據(jù)庫的讀寫極易成為系統(tǒng)容量增長的瓶頸,因此避免數(shù)據(jù)讀寫帶來的壓力,我們在應(yīng)用層和數(shù)據(jù)庫間增加緩存層,通過初始加載和時(shí)間積累等方式,將數(shù)據(jù)記錄同步在緩存層,該層數(shù)據(jù)和用戶的數(shù)據(jù)更改實(shí)時(shí)同步,在于數(shù)據(jù)庫的交互中,會根據(jù)數(shù)據(jù)的重要性和實(shí)時(shí)性要求同步或者異步的更新到數(shù)據(jù)庫中。多多服務(wù)器有多個(gè)數(shù)據(jù)處理模塊,此處以用戶基本信息為例,展示多多數(shù)據(jù)處理中對多層緩存的處理。
圖2 多級緩存的服務(wù)器架構(gòu)
(3)架構(gòu)三:大容量支持——大系統(tǒng)小做
圖3展示了語音中頻道相關(guān)信息處理模塊的演進(jìn)方式,最初在所以的頻道相關(guān)信息的邏輯處理和消息轉(zhuǎn)發(fā)都由MediaServer進(jìn)行,隨著越來越多的功能累加,一方面各種復(fù)雜的功能邏輯處理讓MediaServer不堪重負(fù),直接影響到用用戶使用某些功能的刷新速度和操作反應(yīng);另一方面,每次對于MediaServer的功能更新都會涉及到非常多的細(xì)節(jié)和注意點(diǎn),開發(fā)人員稍有不慎就可能踩到雷區(qū)。因此多多架構(gòu)師建立了新的服務(wù)器功能體系。
圖3 大容量支持—頻道系統(tǒng)功能模塊拆分
(4)架構(gòu)四—語音服務(wù)器分布式架構(gòu)
圖4展示了語音服務(wù)器分布式架構(gòu)中各個(gè)功能模塊:對于萬人頻道,它的信息將會負(fù)載在多個(gè)XChannelMediaServer上,用戶通過XChannelLogin登錄到分布式頻道后,該用戶的信息將會通知到XChannel模塊,并備份各項(xiàng)動(dòng)態(tài)和靜態(tài)數(shù)據(jù)。PublicService代表了架構(gòu)三中抽象出來的各個(gè)功能模塊,為不同系統(tǒng)間的語音通信提供公用的服務(wù)。比如:歌手系統(tǒng)、頻道積分、用戶貢獻(xiàn)、頻道圖標(biāo)等等。無論是公共服務(wù)模塊相關(guān)的數(shù)據(jù)還是分布式頻道系統(tǒng)內(nèi)部的數(shù)據(jù),對于其中動(dòng)態(tài)變化并且需要記錄的數(shù)據(jù),都會按照架構(gòu)二cache的要求為這些數(shù)據(jù)做多級緩存。
圖4 分布式語音服務(wù)器架構(gòu)
不停機(jī)技術(shù)是指當(dāng)多多語音平臺服務(wù)器需要更新補(bǔ)丁或者新的版本時(shí),不需要整體的停機(jī)維護(hù),而是讓在線用戶不知不覺中,通過服務(wù)器的逐個(gè)更新,來達(dá)到版本更新的目的。
不停機(jī)維護(hù)最主要的技術(shù)點(diǎn):動(dòng)態(tài)數(shù)據(jù)全部緩存、宕機(jī)自動(dòng)檢測、快速的數(shù)據(jù)轉(zhuǎn)移、優(yōu)化負(fù)載規(guī)則。
多多平臺中按照單進(jìn)程和多進(jìn)程的區(qū)分,將服務(wù)器分為兩類:
(1)單進(jìn)程服務(wù)器:即在整個(gè)服務(wù)器架構(gòu)中,這種類型的服務(wù)器進(jìn)程有且僅有一個(gè),比如管理類的服務(wù)器;
(2)多進(jìn)程服務(wù)器:這種類型的服務(wù)器可以有一個(gè)或者多個(gè),其進(jìn)程數(shù)量可以根據(jù)負(fù)載的要求動(dòng)態(tài)的進(jìn)行調(diào)整。用戶或者頻道的數(shù)據(jù)由于多數(shù)是需要根據(jù)數(shù)量進(jìn)行負(fù)載調(diào)整的,因此這些關(guān)鍵數(shù)據(jù)基本上都存儲在多進(jìn)程服務(wù)器上。不停機(jī)技術(shù)的主要工作也正是集中于這類服務(wù)器。
這里的跨機(jī)房部署即包括同一網(wǎng)絡(luò)運(yùn)營商下的跨機(jī)房部署,也包括不同的網(wǎng)絡(luò)運(yùn)營商之間的跨IDC部署。
(1)IDC容災(zāi)的需要。如果單點(diǎn)的IDC部署全部多多服務(wù)器,則IDC故障時(shí)對多多服務(wù)器的影響為100%,如果所有的多多服務(wù)器都部署在單一的網(wǎng)絡(luò)類型(比如網(wǎng)通線路),則該網(wǎng)絡(luò)骨干網(wǎng)出現(xiàn)問題時(shí)對多多服務(wù)器的影響也會讓大家一籌莫展。
(2)網(wǎng)絡(luò)環(huán)境所迫。多多提供語音服務(wù)器面向全國用戶提供全天候的語音服務(wù),體驗(yàn)良好的語音服務(wù)要求網(wǎng)絡(luò)穩(wěn)定,低延時(shí),地丟包。眾運(yùn)營商之間的互通壁壘等問題,是的用戶與多多服務(wù)器在跨網(wǎng)跨地區(qū)時(shí),用戶的體驗(yàn)可能變的比較差。
(3)多多服務(wù)器的單區(qū)特性。多多服務(wù)器不分區(qū),所有的用戶不管是聯(lián)通還是電信的都是接入同一區(qū)??缇W(wǎng)絡(luò)接入時(shí),非常容易發(fā)生網(wǎng)絡(luò)波動(dòng)和延時(shí)增大。對用戶的影響是可能造成用戶掉線增多,語音效果變差等,這也要求多多實(shí)現(xiàn)跨網(wǎng)絡(luò)部署。
(1)自主研發(fā)網(wǎng)絡(luò)加速引擎。語音通信中提升傳輸效率,提升抗網(wǎng)絡(luò)丟包能力,能容忍30%的丟包率;單臺語音服務(wù)器的承載人數(shù)提高到15000人;單人語音的帶寬降低至5KB/s。
(2)分布式服務(wù)器架構(gòu)。通過在運(yùn)營環(huán)境和研發(fā)平臺中不斷的檢驗(yàn)和提升分布式服務(wù)器架構(gòu)的性能和可靠性,將同一個(gè)分布式大頻道的容納人數(shù)萬人級別穩(wěn)步提升至十萬人級別。
(3)不停機(jī)維護(hù)技術(shù)。從數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)屬性出發(fā),通過系統(tǒng)肢解和模塊重構(gòu),提高模塊的復(fù)用性,加強(qiáng)各個(gè)底層功能模塊在分布式、大并發(fā)環(huán)境下的高效性與可靠程度,總結(jié)出一套易于實(shí)現(xiàn)、方便推廣的7*24小時(shí)不停機(jī)維護(hù)技術(shù),服務(wù)于公司其它項(xiàng)目。
隨著軟件技術(shù)的不斷提升以及相關(guān)網(wǎng)絡(luò)配套設(shè)施的完善,即時(shí)通訊軟件的功能也日益豐富,它已經(jīng)是成功具有交流、娛樂、商務(wù)辦公、客戶服務(wù)等特性的綜合化信息平臺。一個(gè)多功能化的語音通訊平臺,可對眾多行業(yè)領(lǐng)域有推動(dòng)作用:
(1)各類商務(wù)企業(yè)。即時(shí)通訊是各類商務(wù)企業(yè)內(nèi)部及外部聯(lián)系的重要方式,優(yōu)點(diǎn)是,第一是實(shí)效性好,人們可以在發(fā)出消息很短的時(shí)間內(nèi)得到對方的回應(yīng),滿足同步的需求。第二是形式多樣,除了圖片、文件的傳輸之外,還可以傳輸語音、視頻,維護(hù)成本也相對比較低。第三是易用性強(qiáng),簡單易用。
(2)音樂表演行業(yè)??商峁┰诰€的音樂表演服務(wù),表演者可以用卡拉OK、唱歌比賽等方式與觀眾互動(dòng)。
(3)教育行業(yè)。作為一款清晰、穩(wěn)定的團(tuán)隊(duì)語音工具,可支持遠(yuǎn)程教育。