沈衛(wèi)魏
(上海電力大學經(jīng)濟與管理學院 上海 200090)
語音平臺發(fā)展至今,從即時多人語音的需求只是幾人的小組式對話,發(fā)展到幾百上千人的頻道娛樂,再到如今的萬人大頻道,不僅僅收益并推動著技術的的不斷完善和發(fā)展,更看到語音平臺擁有的巨大的社會需求和不可限量發(fā)展?jié)撃堋1疚膶诙喽嗾Z音平臺的語音平臺服務技術進行研究分析。
多多語音平臺成立初期使用的是DOLBY引擎,在不斷探索更適合自己語音引擎研發(fā)道路,已經(jīng)在2012年中期完成了自主研發(fā)引擎的部署和運營。該款自主研發(fā)VOIP語音引擎,不但將單個語音服務器承載的人數(shù)從使用DOLBY引擎時的3000人,提高到了15000人,而且在該引擎對環(huán)境噪音和冗余數(shù)據(jù)的處理,多多語音平臺通話質量遠超其它同類語音產(chǎn)品。
(1)架構一:剛上線時的多多服務器
多多剛上線時的服務器架構分為兩個系統(tǒng):即時通信(IM)和語音系統(tǒng)。起初的服務器非常簡單,但是與此同時也清晰的表明了多多發(fā)展的兩根主線。IM系統(tǒng)為用戶提供基本的文字聊天、群組創(chuàng)建、搭建社交平臺。語音系統(tǒng)為用戶提供雙人和多人語音服務。此時的架構對于分布式、高并發(fā)訪問、不停機技術都還非常遙遠。這是多多的第一個腳印,也是多多的起點,就在這個基礎上經(jīng)過開發(fā)人員和整個項目的堅持不懈的努力,突破一個個技術難關,才有了后續(xù)日臻完善的服務器架構和忠實的用戶群。圖1為剛上線時多多的服務器架構。

圖1 剛上線時多多的服務器架構
(2)架構二:大容量支持—多級緩存
圖2展示了多多為支撐大容量數(shù)據(jù)使用多級緩存的結構:在原有的架構中,應用層通過RecordServer來對數(shù)據(jù)庫的數(shù)據(jù)進行讀寫,但是當用戶數(shù)量上升后,數(shù)據(jù)庫的讀寫極易成為系統(tǒng)容量增長的瓶頸,因此避免數(shù)據(jù)讀寫帶來的壓力,我們在應用層和數(shù)據(jù)庫間增加緩存層,通過初始加載和時間積累等方式,將數(shù)據(jù)記錄同步在緩存層,該層數(shù)據(jù)和用戶的數(shù)據(jù)更改實時同步,在于數(shù)據(jù)庫的交互中,會根據(jù)數(shù)據(jù)的重要性和實時性要求同步或者異步的更新到數(shù)據(jù)庫中。多多服務器有多個數(shù)據(jù)處理模塊,此處以用戶基本信息為例,展示多多數(shù)據(jù)處理中對多層緩存的處理。

圖2 多級緩存的服務器架構
(3)架構三:大容量支持——大系統(tǒng)小做
圖3展示了語音中頻道相關信息處理模塊的演進方式,最初在所以的頻道相關信息的邏輯處理和消息轉發(fā)都由MediaServer進行,隨著越來越多的功能累加,一方面各種復雜的功能邏輯處理讓MediaServer不堪重負,直接影響到用用戶使用某些功能的刷新速度和操作反應;另一方面,每次對于MediaServer的功能更新都會涉及到非常多的細節(jié)和注意點,開發(fā)人員稍有不慎就可能踩到雷區(qū)。因此多多架構師建立了新的服務器功能體系。

圖3 大容量支持—頻道系統(tǒng)功能模塊拆分
(4)架構四—語音服務器分布式架構
圖4展示了語音服務器分布式架構中各個功能模塊:對于萬人頻道,它的信息將會負載在多個XChannelMediaServer上,用戶通過XChannelLogin登錄到分布式頻道后,該用戶的信息將會通知到XChannel模塊,并備份各項動態(tài)和靜態(tài)數(shù)據(jù)。PublicService代表了架構三中抽象出來的各個功能模塊,為不同系統(tǒng)間的語音通信提供公用的服務。比如:歌手系統(tǒng)、頻道積分、用戶貢獻、頻道圖標等等。無論是公共服務模塊相關的數(shù)據(jù)還是分布式頻道系統(tǒng)內(nèi)部的數(shù)據(jù),對于其中動態(tài)變化并且需要記錄的數(shù)據(jù),都會按照架構二cache的要求為這些數(shù)據(jù)做多級緩存。

圖4 分布式語音服務器架構
不停機技術是指當多多語音平臺服務器需要更新補丁或者新的版本時,不需要整體的停機維護,而是讓在線用戶不知不覺中,通過服務器的逐個更新,來達到版本更新的目的。
不停機維護最主要的技術點:動態(tài)數(shù)據(jù)全部緩存、宕機自動檢測、快速的數(shù)據(jù)轉移、優(yōu)化負載規(guī)則。
多多平臺中按照單進程和多進程的區(qū)分,將服務器分為兩類:
(1)單進程服務器:即在整個服務器架構中,這種類型的服務器進程有且僅有一個,比如管理類的服務器;
(2)多進程服務器:這種類型的服務器可以有一個或者多個,其進程數(shù)量可以根據(jù)負載的要求動態(tài)的進行調(diào)整。用戶或者頻道的數(shù)據(jù)由于多數(shù)是需要根據(jù)數(shù)量進行負載調(diào)整的,因此這些關鍵數(shù)據(jù)基本上都存儲在多進程服務器上。不停機技術的主要工作也正是集中于這類服務器。
這里的跨機房部署即包括同一網(wǎng)絡運營商下的跨機房部署,也包括不同的網(wǎng)絡運營商之間的跨IDC部署。
(1)IDC容災的需要。如果單點的IDC部署全部多多服務器,則IDC故障時對多多服務器的影響為100%,如果所有的多多服務器都部署在單一的網(wǎng)絡類型(比如網(wǎng)通線路),則該網(wǎng)絡骨干網(wǎng)出現(xiàn)問題時對多多服務器的影響也會讓大家一籌莫展。
(2)網(wǎng)絡環(huán)境所迫。多多提供語音服務器面向全國用戶提供全天候的語音服務,體驗良好的語音服務要求網(wǎng)絡穩(wěn)定,低延時,地丟包。眾運營商之間的互通壁壘等問題,是的用戶與多多服務器在跨網(wǎng)跨地區(qū)時,用戶的體驗可能變的比較差。
(3)多多服務器的單區(qū)特性。多多服務器不分區(qū),所有的用戶不管是聯(lián)通還是電信的都是接入同一區(qū)。跨網(wǎng)絡接入時,非常容易發(fā)生網(wǎng)絡波動和延時增大。對用戶的影響是可能造成用戶掉線增多,語音效果變差等,這也要求多多實現(xiàn)跨網(wǎng)絡部署。
(1)自主研發(fā)網(wǎng)絡加速引擎。語音通信中提升傳輸效率,提升抗網(wǎng)絡丟包能力,能容忍30%的丟包率;單臺語音服務器的承載人數(shù)提高到15000人;單人語音的帶寬降低至5KB/s。
(2)分布式服務器架構。通過在運營環(huán)境和研發(fā)平臺中不斷的檢驗和提升分布式服務器架構的性能和可靠性,將同一個分布式大頻道的容納人數(shù)萬人級別穩(wěn)步提升至十萬人級別。
(3)不停機維護技術。從數(shù)據(jù)結構和系統(tǒng)屬性出發(fā),通過系統(tǒng)肢解和模塊重構,提高模塊的復用性,加強各個底層功能模塊在分布式、大并發(fā)環(huán)境下的高效性與可靠程度,總結出一套易于實現(xiàn)、方便推廣的7*24小時不停機維護技術,服務于公司其它項目。
隨著軟件技術的不斷提升以及相關網(wǎng)絡配套設施的完善,即時通訊軟件的功能也日益豐富,它已經(jīng)是成功具有交流、娛樂、商務辦公、客戶服務等特性的綜合化信息平臺。一個多功能化的語音通訊平臺,可對眾多行業(yè)領域有推動作用:
(1)各類商務企業(yè)。即時通訊是各類商務企業(yè)內(nèi)部及外部聯(lián)系的重要方式,優(yōu)點是,第一是實效性好,人們可以在發(fā)出消息很短的時間內(nèi)得到對方的回應,滿足同步的需求。第二是形式多樣,除了圖片、文件的傳輸之外,還可以傳輸語音、視頻,維護成本也相對比較低。第三是易用性強,簡單易用。
(2)音樂表演行業(yè)。可提供在線的音樂表演服務,表演者可以用卡拉OK、唱歌比賽等方式與觀眾互動。
(3)教育行業(yè)。作為一款清晰、穩(wěn)定的團隊語音工具,可支持遠程教育。