您當(dāng)前的位置是:  首頁(yè) > 資訊 > 國(guó)內(nèi) >
 首頁(yè) > 資訊 > 國(guó)內(nèi) >

融云首度披露高并發(fā)系統(tǒng)架構(gòu)設(shè)計(jì)四大要點(diǎn)

2020-01-13 13:39:08   作者:   來源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  5G因高速率、大容量和低時(shí)延三個(gè)主要特征,為我們帶來了無限遐想,但如果底層通信能力及設(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)化”論壇演講中毫無保留地分享了融云高并發(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)
  采用異步化的請(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ì)越明顯。
  合理的緩存策略。通過數(shù)據(jù)、分布式緩存、本地緩存、客戶端緩存層層遞進(jìn)的緩存策略,使越活躍的數(shù)據(jù)越逼近客戶。目的在于讓熱的數(shù)據(jù)離它要處理的位置更近,以提高緩存的利用率,加快數(shù)據(jù)處理的速度。
  選用適合的數(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ǔ)空間;Bloom Filter可以認(rèn)為是BitMap的一種應(yīng)用,可以用來快速判定數(shù)據(jù)是否存在,避免緩存穿透。
  高效的數(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á)幾萬甚至幾十萬,消息極其活躍,瞬時(shí)峰值極高。融云承諾的是成員無上限的聊天室服務(wù),最高服務(wù)過15萬人同時(shí)在線,每秒消息的分發(fā)量超過2000萬條,日消息峰值超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)景,消息可能頻繁到每秒瞬間幾萬條消息涌向終端,即便終端能夠處理過來,用戶也未必看得過來,體驗(yàn)反而很差。所以當(dāng)直播間消息量過大或消息頻率過高時(shí),融云會(huì)為消息設(shè)置優(yōu)先級(jí),并將連續(xù)消息和相似消息優(yōu)化成一條“疊加消息”,同時(shí)根據(jù)優(yōu)先級(jí)機(jī)制拋棄無用戶屬性消息,確保消息并發(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)景無處不在,底層的通信系統(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)化都毫無意義。
  回顧前文,融云的云通信系統(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)化與提升。
 
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題

CTI論壇會(huì)員企業(yè)