5G因高速率、大容量和低時(shí)延三個(gè)主要特征,為我們帶來了無(wú)限遐想,但如果底層通信能力及設(shè)計(jì)架構(gòu)不足以支撐高并發(fā)的場(chǎng)景,高延時(shí)仍然不可避免,那么5G技術(shù)所賦予的全新應(yīng)用體驗(yàn)也將大打折扣,因此,掌握高并發(fā)的通信技術(shù)在5G時(shí)代至關(guān)重要。
在2019全球互聯(lián)網(wǎng)通信云(WIIC)大會(huì)上,融云技術(shù)總監(jiān)高曉光在“架構(gòu)演進(jìn)與性能優(yōu)化”論壇演講中毫無(wú)保留地分享了融云高并發(fā)通信技術(shù)的系統(tǒng)設(shè)計(jì)與實(shí)踐,希望給廣大開發(fā)者提供一些實(shí)戰(zhàn)幫助。作為通信云行業(yè)的技術(shù)領(lǐng)導(dǎo)者,融云連續(xù)五年保持IM即時(shí)通訊市場(chǎng)占有率第一,是業(yè)內(nèi)唯一承諾在高并發(fā)和弱網(wǎng)環(huán)境下,仍然可以保障消息不丟、不重、不亂序的廠商,融云的高并發(fā)通信技術(shù)和系統(tǒng)架構(gòu)也已成為業(yè)界爭(zhēng)相學(xué)習(xí)的技術(shù)標(biāo)桿。
融云技術(shù)總監(jiān)高曉光演講
高并發(fā)系統(tǒng)的設(shè)計(jì)要點(diǎn)
WICC會(huì)上,高曉光首先分享了融云在整個(gè)通信平臺(tái)上常用的系統(tǒng)性能優(yōu)化手段。在系統(tǒng)運(yùn)行的性能上,融云主要關(guān)注業(yè)務(wù)、系統(tǒng)和存儲(chǔ)三個(gè)層面的問題。在業(yè)務(wù)層面,建議開發(fā)者關(guān)注每個(gè)業(yè)務(wù)請(qǐng)求接口的響應(yīng)時(shí)長(zhǎng),動(dòng)態(tài)掌握正確的響應(yīng)時(shí)長(zhǎng),過長(zhǎng)和過短都不合理,并對(duì)程序運(yùn)行中的性能拐點(diǎn),盡可能的優(yōu)化,延長(zhǎng)其到來的時(shí)間,這可極大提升高并發(fā)的業(yè)務(wù)承載能力。在系統(tǒng)層面,程序運(yùn)行過程中關(guān)注CPU、內(nèi)存和I/O這三方面的使用情況,合理配置資源;在存儲(chǔ)層面,根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景做數(shù)據(jù)庫(kù)選型,選擇合適的存儲(chǔ)介質(zhì)。
基于以上性能問題關(guān)注點(diǎn),高曉光坦言融云高并發(fā)系統(tǒng)的設(shè)計(jì)要點(diǎn)主要集中在以下四個(gè)方面:
融云高并發(fā)系統(tǒng)的設(shè)計(jì)要點(diǎn)
1、采用異步化的請(qǐng)求處理。目前,融云采用基于Actor模型自研的分布式RPC框架來實(shí)現(xiàn)整個(gè)通信云平臺(tái),不但可以把請(qǐng)求的源數(shù)據(jù),像流水線一樣在每個(gè)節(jié)點(diǎn)處理完后直接下轉(zhuǎn),還可以將最終處理的結(jié)果通過溯源直接投遞回去,從而減少數(shù)據(jù)的調(diào)用次數(shù)。相對(duì)于同步的方式,異步化可以提高資源的復(fù)用程度,中間需要被處理的節(jié)點(diǎn)越多,異步化的優(yōu)勢(shì)會(huì)越明顯。
2、合理的緩存策略。通過數(shù)據(jù)、分布式緩存、本地緩存、客戶端緩存層層遞進(jìn)的緩存策略,使越活躍的數(shù)據(jù)越逼近客戶。目的在于讓熱的數(shù)據(jù)離它要處理的位置更近,以提高緩存的利用率,加快數(shù)據(jù)處理的速度。
3、選用適合的數(shù)據(jù)結(jié)構(gòu)與算法,可以極大的提高整個(gè)程序的計(jì)算性能。例如一致性哈希算法,可用于整個(gè)服務(wù)的數(shù)據(jù)的散列,或者節(jié)點(diǎn)的定位;LRU緩存,一個(gè)帶數(shù)據(jù)淘汰的緩存組件,把冷的數(shù)據(jù)淘汰掉,把位置騰給熱的數(shù)據(jù),提高數(shù)據(jù)利用率;BitMap,每一個(gè)比特位都可用來標(biāo)識(shí)一個(gè)狀態(tài)位,可用于快速的狀態(tài)判斷和節(jié)省存儲(chǔ)空間;BloomFilter可以認(rèn)為是BitMap的一種應(yīng)用,可以用來快速判定數(shù)據(jù)是否存在,避免緩存穿透。
4、高效的數(shù)據(jù)存取模型。在融云整個(gè)系統(tǒng)里面會(huì)常用到幾種不同的存儲(chǔ)類型,沒有高下之分,高曉光說選用的原則是一定要符合業(yè)務(wù)場(chǎng)景。例如,存用戶的在線和離線狀態(tài),融云會(huì)選用KV存儲(chǔ);存儲(chǔ)消息,由于消息對(duì)于時(shí)序的要求很高,所以可以選擇時(shí)序型數(shù)據(jù)庫(kù)。數(shù)據(jù)怎么用起來方便,就怎么去存取它。
高并發(fā)系統(tǒng)架構(gòu)的最佳實(shí)踐解讀
WICC上,高曉光談到消息分發(fā)的典型場(chǎng)景有單聊、群聊、聊天室,不同場(chǎng)景應(yīng)具體分析、分別應(yīng)對(duì),才是解決高并發(fā)問題的秘訣。會(huì)上特別針對(duì)群聊和聊天室的不同特點(diǎn),融云分享了不同的最佳實(shí)踐方案。
針對(duì)群聊場(chǎng)景。首先,融云在系統(tǒng)中使用消息分發(fā)控制策略,在群消息分發(fā)中引進(jìn)快、中、慢三個(gè)隊(duì)列,分別設(shè)置不同的延時(shí)值,根據(jù)不同的群成員數(shù)量,映射到不同處理隊(duì)列中,將絕大多數(shù)百人以下的群放入快速隊(duì)列,進(jìn)行快速處理,可極大地減輕分發(fā)的壓力。
其次,融云采用消息直推與通知拉取相結(jié)合的方式,在消息不頻繁時(shí)用直推模式,當(dāng)消息量爆增,產(chǎn)生積壓時(shí)即轉(zhuǎn)為通知拉取模式。同時(shí),使用ACK機(jī)制進(jìn)行消息可靠同步,且同步的消息嚴(yán)格按照時(shí)間戳有序進(jìn)行,這個(gè)時(shí)間戳由服務(wù)端保證唯一性,這也是融云敢于承諾消息不重不丟不亂序的秘籍所在。
再則,融云通過“引用分發(fā)”機(jī)制降低消息緩存的存儲(chǔ)占用。原則上,是按消息大小及群成員數(shù)量來判定是否采用“引用分發(fā)”。當(dāng)消息體大,如發(fā)送語(yǔ)音或圖片時(shí),就采用“引用分發(fā)”機(jī)制,只分發(fā)一個(gè)索引,當(dāng)終端實(shí)際拉取消息時(shí),再推送實(shí)體消息。
針對(duì)聊天室場(chǎng)景。聊天室和群聊的不同之處在于:聊天室的成員關(guān)系是臨時(shí)性的,出入頻繁,若遇大型直播,成員瞬時(shí)可達(dá)幾萬(wàn)甚至幾十萬(wàn),消息極其活躍,瞬時(shí)峰值極高。融云承諾的是成員無(wú)上限的聊天室服務(wù),最高服務(wù)過15萬(wàn)人同時(shí)在線,每秒消息的分發(fā)量超過2000萬(wàn)條,日消息峰值超2218億條。
為滿足高并發(fā)消息的服務(wù)請(qǐng)求,融云部署了環(huán)形隊(duì)列的內(nèi)存緩存,滾動(dòng)保存最近的50條消息。在終端完全改用通知拉取的方式,用戶收到通知后,可從服務(wù)端的緩存中獲取消息,這起到了很好的限流作用,直接緩解了終端壓力。
另外,對(duì)于聊天室而言,融云根據(jù)多年服務(wù)客戶的經(jīng)驗(yàn)以及自身的技術(shù)模型,制定了一套按消息類型進(jìn)行消息拋棄的處理機(jī)制。例如大型直播的場(chǎng)景,消息可能頻繁到每秒瞬間幾萬(wàn)條消息涌向終端,即便終端能夠處理過來,用戶也未必看得過來,體驗(yàn)反而很差。所以當(dāng)直播間消息量過大或消息頻率過高時(shí),融云會(huì)為消息設(shè)置優(yōu)先級(jí),并將連續(xù)消息和相似消息優(yōu)化成一條“疊加消息”,同時(shí)根據(jù)優(yōu)先級(jí)機(jī)制拋棄無(wú)用戶屬性消息,確保消息并發(fā)量極大的情況下,用戶端也可以享受流暢的直播互動(dòng)體驗(yàn)。對(duì)于聊天室,融云還額外對(duì)消息上行進(jìn)行限流,也有效提升了用戶體驗(yàn)。
未來所面臨的挑戰(zhàn)和改進(jìn)
隨著5G+物聯(lián)網(wǎng)時(shí)代的到來,各種終端設(shè)備甚至?xí)由斓接|手可及的任意一物,海量消息激增將直接導(dǎo)致高并發(fā)的場(chǎng)景無(wú)處不在,底層的通信系統(tǒng)架構(gòu)也將面臨難于想象的考驗(yàn)。
高曉光表示,融云一直以來在服務(wù)性能上都圍繞著三大重心去進(jìn)行優(yōu)化,一、合理的算法,降低CPU使用;二、合理的內(nèi)存結(jié)構(gòu),降低內(nèi)存用量,提高緩存利用率;三、盡可能的降低I/O的頻次。同時(shí),高曉光在演講中還著重強(qiáng)調(diào):任何的優(yōu)化都需要符合特定的場(chǎng)景,如果沒有場(chǎng)景,任何優(yōu)化都毫無(wú)意義。
回顧前文,融云的云通信系統(tǒng)架構(gòu)之所以能夠經(jīng)受住各種高并發(fā)的極端考驗(yàn),與融云正確分析場(chǎng)景的特點(diǎn),進(jìn)而采取有效對(duì)策密切相關(guān)。此次融云在WICC上的技術(shù)分享,希望幫助開發(fā)者了解到,在單群聊及聊天室這樣典型的消息分發(fā)場(chǎng)景下,通信云技術(shù)如何對(duì)高并發(fā)業(yè)務(wù)進(jìn)行支撐。通過高并發(fā)系統(tǒng)設(shè)計(jì)及最佳實(shí)踐的解讀,融云希望引領(lǐng)業(yè)界技術(shù)領(lǐng)袖一起,持續(xù)推動(dòng)通信云技術(shù)對(duì)5G多應(yīng)用場(chǎng)景的服務(wù)性能優(yōu)化與提升。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長(zhǎng)
- GitLab將告別中國(guó)區(qū)用戶:是時(shí)候選擇新的“極狐”或保護(hù)賬號(hào)了
- 蘋果明年推至少22款新品,阿里非洲首站啟動(dòng),科技新品盛宴拉開帷幕
- SUSE預(yù)測(cè):未來私有AI平臺(tái)崛起,讓我們共同見證AI的未來
- AI伴侶“小奇”:奇富科技重塑金融服務(wù)體驗(yàn)的探索之作
- 揭秘軟銀孫正義神秘芯片計(jì)劃:打造超越NVIDIA的未來科技新星
- 大模型創(chuàng)企星辰資本獲數(shù)億融資,騰訊啟明等巨頭入局,人工智能新篇章開啟
- 大模型獨(dú)角獸階躍星辰融資新動(dòng)態(tài):數(shù)億美金B(yǎng)輪,揭秘星辰未來之路
- 哪吒汽車創(chuàng)始人資金遭凍結(jié),1986萬(wàn)元股權(quán)風(fēng)波引關(guān)注
- 本田與日產(chǎn)醞釀合并:明年6月敲定協(xié)議,新公司社長(zhǎng)待本田推薦
- 金融大模型新突破:百川智能Baichuan4-Finance引領(lǐng)行業(yè),準(zhǔn)確率領(lǐng)先GPT-4近20%,變革金融業(yè)未來
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。