干貨!建設高質量通訊云平臺的要點和關鍵技術!
12月19日,UPYUN架構與運維大會(Arch&Ops Conf)深圳專場在科興科學園舉辦,這場面向運維和架構從業人員所舉辦的大型技術會議,致力于推動各項運維技術、產品架構等在互聯網和移動互聯網的研發和應用。深圳場是此次會議的收官之場,云之訊CTO賈俊杰先生作為本次大會的***嘉賓,為大家帶來了題為《高質量通訊PAAS平臺的架構要點》的主題演講。
云之訊CTO賈俊杰演講內容實錄(摘要版):
(云之訊***技術官,賈俊杰先生,請叫我最帥CTO~)
賈俊杰:我的主題是建設高質量通訊云平臺的要點和關鍵技術。通信概念非常廣,有信息交互的都可以算通訊,所有可見的互聯網業務都可以稱之為通訊。我講的概念是屬于大家認知的傳統中,電信網里的通信概念,包括我們熟悉的打電話、視頻通話、短信、會議、社交中心。云平臺,大家應該非常熟悉,我們現在用得非常廣泛,從IaaS、PaaS、SaaS,大家經常使用這三層,PaaS包括推送等云平臺。估計大家用過短信業務,我認為這屬于通信領域,比如我們發驗證碼,怎么把傳統的打電話能力集成到APP里,把視頻通話、語音會議、視頻會議集中到APP里,這是通訊云平臺的概念。我們是做融合通訊的云平臺服務商,今天我們把在構建過程中遇到的問題以及對這方面的問題解決方法,給大家提供個方向。
我們看通訊云平臺的構建方式,要看通訊業務的發展趨勢。如果對通訊有所了解,我們會發現,通訊在全面向IP化、移動互聯網化發展。非常傳統的窄帶通訊傳輸,不管在電信網里都是完全IP化傳輸。移動互聯網更不用說,肯定也是在IP化的基礎上進行傳輸,這是一個非常大的發展方向。一是傳統的電信網的通訊服務商,它的通訊能力非常單一,傳統的通訊能力只可能進行語音通話、發短信,無法滿足互聯網的發展需要。二是像微信、QQ做了這個事情,能夠在移動互聯網的場景下做通信。
云化發展方向,這主要來自于互聯網和移動互聯網的業務發展需要,包括傳統互聯網以及現在主流的傳統電信網、主流IP網通訊服務商蠻封閉。現在在各行各業都需要通訊能力,比如在線醫療、在線教育、智能硬件等各行各業都需要通訊能力。這兩年在逐漸興起通訊云化服務,在這樣一個發展趨勢下,我們怎么構建一個通訊的云平臺。我們總結出以下幾個要點,一是精巧和高效,在基于互聯網的通訊,由于本身的特點,對實時性的要求特別高,二是這個通訊是雙向的,這對我們平臺的架構要求非常大。
從高效方面來講,我們做了分層架構設計,我們把服務層、業務層等進行分離,我們底層有OTP網絡支撐。在不同的層面單獨負責不同的能力,接入層設計來講,網絡層來講完全不理解業務,我們叫做透明轉發的網絡,對于接入層,他與業務相吻合,不完全理解業務,對業務層是完成了各種各樣的通訊業務,達到不同層次的能力的分工,方便以后的發展。擴展隔離方面,接入層不理解業務,最需要通過業務ID或是通訊過程中的備ID做路由,根據不同ID和路由的請求,分到不同的模塊。我們有會議、點對點語音做分割,不會有耦合關系。異構多元化在接入層和網絡層,我們的趨勢按照現在理解處于傳統的電信網和互聯網的融合通訊的時代,相互補充。
接入層有豐富的接入能力,對于互聯網的接入能力來講,我們需要支持像各種移動端、PC固定端、網頁打電話等技術,它的連接方式主要通過TCP實現的。短信有多的接入方式,可能是HTTP、傳統電信短信的協議。在穩定高可用上,主要構建了OTT通訊網絡,這個網絡是基于公共互聯網的加速網絡,我在這個網絡上跑我的業務,避免通用的互聯網帶給我實時通訊的影響,后面我們也會專門給大家介紹一下。
談到網絡,我們要了解互聯網做VOIP的現狀,網絡非常復雜,無論從用戶的接入網絡、骨干傳輸網絡都非常復雜。用戶網絡是Wifi、3G、4G,傳輸網絡是時多種運營商,涉及跨運營商、跨地域的通訊,這對實時通訊的影響非常重要。實時通訊主要看丟包、延遲和抖動。這跟我們通用的互聯網和移動互聯網的差異非常大,在實時通訊里,延遲的要求是幾十毫秒或百毫秒級的,很多互聯網的業務沒什么高要求。丟包,有時候丟包1-2%的時候,非常影響通話的體驗,這在平常的業務上基本沒有感知。
所有的問題導致了我們在做通訊云平臺的時候遇到了各種各樣的困難,我們怎么做?這也是回到剛才我們所說的OTT網絡建設上,一個透明的智能路由網絡,這是我自建的加速平臺,包括谷歌、騰訊、YY等***的互聯網通訊都有網絡。這個網絡很大程度上可以加速我的通訊服務,保證通訊質量,解決網絡復雜以及***一公里的問題。
這類似于主流SDN的技術,通過自己管理路由的方式,把核心部署的節點關聯起來,如果兩個用戶在做通訊的時候,我只需要把用戶通過它的IP地址識別,接入離他最近的節點上,被叫也是通過IP識別,這兩個節點的通訊一定是通過自己的探測技術、監控技術實現,進行動態的運算,保證這兩個用戶之間選擇一條最快,質量***、最穩定的通道傳輸語音數據。這里主要應用到隧道技術以及OSFP協議路由技術。在性能上,如果我們考慮到媒體轉發對機房、網絡的笑話比較大,所以我們有轉發的模塊進行加速,提高性能。
建設OTT網絡的核心問題,一是路由機制,二是策略問題,三是怎么部署這些點,如果用戶選擇這個節點離用戶不是最近的,或是離用戶的節點效果不是***的,策略非常好,用戶的效果也保障不了。這是我們根據兩點,一是自身分布情況,你的用戶分布在哪里,用戶類型是怎樣的,在某一個地區是Wifi的多還是3G的多,是聯通的多還是電信的多,根據用戶的分布情況決定選擇的點。我們會根據全國的情況劃分區域,針對不同的區域針對性選點。這是用戶區域分布和某一個容量節點有很大的關系,在選點的過程中用一些第三方或是自己業務的測試方法監控。
我選擇的這個點對我來說一定是最有效的,保證我選的點是最有效的。這是我們大概組網的網絡拓撲,包括分層次網絡架構,分布式部署,按區域劃分業務。最前端的是用戶部署,這一定部署在離用戶最近的地方,保證用戶就近選擇一個點進行接入。另一個是核心的轉發節點。這種接入節點可能是單線的,這個點只接入聯通的用戶,這個點只接入電信的用戶,我可以通過中間的轉發節點,這一定是三線或是BGP的機房。分布式部署,這在網絡拓撲上也有體現,比傳統的通訊網分布的更廣泛一些,傳統的做電商、點播、直播可能不需要那么多分布點,我們分布得更廣泛,覆蓋到地市級的水平。按區劃分業務,每個地區只負責接入本地區的業務,核心點也是,某一個節點只負責本地的,某一些接入點的中轉,而不是負責全局的,它有一個分配策略。
在建設OTT網絡的同時,怎么對網絡進行監控和質量管理。一是全網絡節點網絡狀態監控;二是全網絡節點故障實時預警;三是基于業務運營不斷優化。我會動態根據它的監控情況做調整,某種情況下可以做到自動切換。用戶一般會動態得到兩個以上的節點,離它最近的節點出故障,它會動態選擇次近的節點,不會導致接入失敗。我們會根據業務的情況不斷做調整,這是非常關鍵的。尤其是我們選了這么多點,我們選的每個點在本地不一定是***的,即使當時是***的,長期來講不一定是非常好的,有可能會變壞。
通過業務運營的數據做判斷,我們在通訊里語音,它有一些值,如果這個值在持續下降,我會把這個點撤掉,選擇更好更新的節點替換它。通過網絡,還有一些需要優化的東西,這跟剛才說的不太一樣,剛才說的都是HTTP等協議,這里基本不用HTTP,我們用得比較多的是SIP、XMPP、私有協議,我們選擇的是私有協議。私有協議類似于完全二進制,自己編碼、解碼實現,這種效率是***的,尤其是針對移動互聯網的場景。
媒體傳輸質量保障,這不同于一般的點播,這是雙向的,丟包率的影響非常大,對實時的要求非常高。我們會做非常多的糾錯以及保證質量的措施,我在傳輸一份數據的時候,它可能會傳2份或是1.5份,具體看不同的網絡,在某一個包丟掉后,我可以通過其他的包把它修復掉。在某一些丟包場景下,可以保證我的傳輸數據的效果。我們現在丟包5-25%,在大于30%的時候,Mos值會低于正常的情況,無法保證,效果會受一定影響。
通過ARQ的技術,我們稱之為自動同傳,尤其是視頻的時候,每一幀的大小不一樣,我們對關鍵值會做同傳的處理,某一些I幀丟掉了,我們會保持一些。
統一策略控制,我們認為這是非常關鍵的。就通訊來講,它對終端的適應性不太好,終端不同的手機對語音通訊和視頻通訊的參數非常大,我們的策略是把所有的策略統一配置,比如客戶端在語言設置時選擇多大的流、連接方式、路由方式、優選編碼解碼等,都是通過后臺的中心進行控制。策略控制的思路主要包括后端、統一制定策略;動態、智能調動;前端,使能可控。
不管是時網絡的因素還是手機本身所在不同的網絡類型上,經常會有變化,如果策略寫死會對各種情況下的通訊指南有很大的影響,這是在后臺做統一配置。這是動態的,智能調整,我們講每次通話的參數都不一樣,在打電話或通信之前,動態獲取信息,我會判斷這次通話用的是什么網絡,你的網絡質量怎么樣,我給你動態確定,你在這樣的參數下需要什么樣的參數,保證動態獲取配置,選擇一個最合適的通訊方式跟后臺通訊。
使能方面,很多通訊參數配置分不同等級,后面談到有一些是全局的,有的是按業務的,不同的業務采用不同的參數,***級的是某些用戶才會遇到的問題,我們會單獨為他定制參數。這是流量控制的策略和參數,***個是全局的配置,一個心跳的技術,最小流量的消耗。在媒體數據壓縮上,我們會選擇私有壓縮的方式,把信息進行壓縮。在碼率上,我們動態做調整。比如3G情況下,碼率一般在150至200Kbps之間,效果最合適,不然可能會有問題。
Wifi情況倆下面大概是200至300之間。如果設置得不合理,你采用非常高的碼率會導致帶寬不夠,傳輸數據越多,丟包率越大。本身在Wifi情況下,帶寬的利用率不好,很多帶寬沒利用起來。
客戶端連接策略上,我們可以動態調整,主要有幾點,一是就近接入自有網絡,二是做同網,尤其是通訊業務,按我們的經驗,丟包率等影響非常差;三是預埋的信息,把歷史上獲取的接入層預埋到里面去,你可以同時選擇多個節點,根據實際情況把差的節點保持一個***的節點。這是媒體路由的策略,我們會選擇媒體多個節點選擇策略,我會運用最小路徑的算法,我會選擇怎么跳轉,假如兩個都是同網,可能是P2P,或是一跳中轉。其他的是動態的策略調整的技術,這是我們策略控制機制,我們控制策略的時候會把所有終端類型、版本號、網絡狀態情況,我們都會統計出來,根據不同的手機型號,他可能采用什么參數***,我會定制一套參數在后面,一定保障它在這種參數下,通訊的質量和通訊效果是***的。這是具體的客戶端控制參數,我需不需要做冗余,是否需要做日志檢測的機制,這些后臺都可以控制。
這是IM消息同步機制,這適用于IM通訊技術里。傳統來講,可能直接推下去了,這種方式可能會更好,開始是這種通知,挖取所有的通知,保障消息100%不丟失,這是非常好的策略。實時通訊是當前的小眾業務方向,希望對大家有幫助,如果大家想深入了解,我們可以線下交流,謝謝大家!