下一页亚洲11p_国产精品亚洲第一页在线观看_麻豆影院在线观看免费视频_亚洲色播在线观看_激情亚洲欧美另类小说图片

您現(xiàn)在的位置 :

首頁  >  企業(yè)新聞 >  > 正文

空降流量危機(jī)?QQ音樂升級(jí)架構(gòu)應(yīng)對(duì)高并發(fā)

時(shí)間 :2023-08-13 15:54:49   來源 : 程序員客棧

# 關(guān)注并星標(biāo)騰訊云開發(fā)者

# 每周3 | 談?wù)勎以隍v訊的架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)

#第2期|趙威:QQ音樂評(píng)論系統(tǒng)如何實(shí)現(xiàn)高可用?


【資料圖】

QQ 音樂自誕生以來,已有多個(gè)版本的評(píng)論業(yè)務(wù)系統(tǒng)。最新版本是19年再次全新迭代,基于 tlist 存儲(chǔ),按照發(fā)表時(shí)間順序展示。后續(xù)為了更好的用戶體驗(yàn),產(chǎn)品形態(tài)調(diào)整為評(píng)論蓋樓模式,為了實(shí)現(xiàn)該功能,存儲(chǔ)遷移到 mongo。

目前評(píng)論作為用戶社交重要場(chǎng)景以及藝粉互動(dòng)(明星空降)重要場(chǎng)地,經(jīng)常會(huì)有突發(fā)流量。為了更好地保障空降場(chǎng)景評(píng)論體驗(yàn),我們對(duì)評(píng)論系統(tǒng)進(jìn)行充分的設(shè)計(jì)。

評(píng)論系統(tǒng)設(shè)計(jì)核心挑戰(zhàn)點(diǎn)在于藝人空降時(shí)需要扛住突增的讀寫壓力,包括評(píng)論數(shù)量、評(píng)論列表等讀場(chǎng)景,以及發(fā)表評(píng)論,藝人評(píng)論置頂?shù)葘憟?chǎng)景。

如果直接讀 mongo,需要用非常高的存儲(chǔ)成本來抗住讀壓力。對(duì)于高并發(fā)熱 key,常規(guī)使用緩存方案,在緩存使用中注意做好防穿透以及限流策略,防止存儲(chǔ)高負(fù)載雪崩。

評(píng)論寫涉及比較復(fù)雜的業(yè)務(wù)邏輯,整體流程包含:

?? 評(píng)論安全打擊;

?? 評(píng)論發(fā)布屬地信息查詢并記錄;

?? 評(píng)論是否需要置頂;

?? 評(píng)論是否樂評(píng)人評(píng)論。

?? ......

它涉及多個(gè)操作,部分處理失敗會(huì)造成比較嚴(yán)重的體驗(yàn)問題。需要保障數(shù)據(jù)處理的一致性。為了保障一致性,一種是使用事務(wù)處理,強(qiáng)一致,但吞吐量稍微差些。另一種是使用可重入保障最終一致性,為了保障更高的吞吐量,寫場(chǎng)景采用了最終一致方案。

通過消息隊(duì)列解耦將評(píng)論寫入高速 cache,異步寫入 mongo。同時(shí)也能通過重試,確保比較核心數(shù)據(jù)最終寫入 mongo。

通過上面兩種設(shè)計(jì),能在正常情況下很好滿足日常評(píng)論的吞吐量,那是否真正做到高可用呢?隨著業(yè)務(wù)迭代,在 add 消費(fèi)場(chǎng)景再次增加了業(yè)務(wù)邏輯,比如增加上報(bào),如果業(yè)務(wù)延時(shí)增加比較大或前置屬地查詢失敗比較多時(shí),整體 add 流程處理時(shí)延嚴(yán)重增加,導(dǎo)致消費(fèi)效率下降、消息堆積,最后導(dǎo)致大盤全部評(píng)論全部延遲消費(fèi),用戶體驗(yàn)出現(xiàn)發(fā)布后沒有外顯丟評(píng)論的體驗(yàn)問題。

評(píng)論系統(tǒng)引入熱門消息隊(duì)列,將全局評(píng)論和熱門評(píng)論的消息隊(duì)列做拆分。當(dāng)熱門消息過多時(shí),最多只影響局部熱門消息隊(duì)列的堆積,對(duì)全局評(píng)論體驗(yàn)不影響。

上面沒有在生成時(shí)直接寫兩個(gè)消息隊(duì)列 topic,而采用對(duì)已有的消息隊(duì)列再消費(fèi)寫入到熱門消息隊(duì)列,是由于下游還有很多場(chǎng)景在消費(fèi)原有的消息隊(duì)列,比如各種任務(wù)系統(tǒng)等,為了減少開發(fā)成本,采用了目前的方案。

采用上面的讀寫設(shè)計(jì),基本能滿足日??战祱?chǎng)景評(píng)論系統(tǒng)的可用性。隨著空降參與藝人粉絲越來越多,業(yè)務(wù)遇到新的挑戰(zhàn)。

藝人空降評(píng)論區(qū)藝粉互動(dòng)效果不錯(cuò),越來越多藝人空降評(píng)論區(qū)。粉絲參與熱情高漲,讀寫流量節(jié)節(jié)高升,空降活動(dòng)導(dǎo)致評(píng)論系統(tǒng)挑戰(zhàn)越來越大,需要系統(tǒng)優(yōu)化保障服務(wù)質(zhì)量。我們通過如下方式來處理挑戰(zhàn):

?? 增加寫消費(fèi)效率:增加 mongo 存儲(chǔ)的存儲(chǔ)核數(shù),并增加消費(fèi)并發(fā)度;

?? 讀服務(wù)平行擴(kuò)容,并拆分緩存到更多的 key(uin%10等),防止熱 key 太集中,增加讀服務(wù)吞吐量;

?? 拆分讀服務(wù)和寫服務(wù)部署,防止讀寫互相影響;

?? 非關(guān)鍵場(chǎng)景限流,保障核心路徑的可用性。

通過上述手段,保障空降活動(dòng)大致穩(wěn)定可靠,雖然遇到消費(fèi)瓶頸,導(dǎo)致寫場(chǎng)景有輕微堆積,但用戶感知沒有那么強(qiáng)烈。

其中一次大牌藝人活動(dòng)中評(píng)論系統(tǒng)整體穩(wěn)定可靠,但還是遇到了消費(fèi)瓶頸,且中間出現(xiàn)了依賴存儲(chǔ) ckv 由于設(shè)置了降冷,在訪問量非常高且空查詢比較多的情況下,大量請(qǐng)求降到降冷存儲(chǔ) tssd。由于 tssd 降低成本設(shè)計(jì)未充分業(yè)務(wù)隔離,導(dǎo)致全平臺(tái) tssd 告警的問題。雖然通過限流緊急處理,但還是需要有系統(tǒng)性優(yōu)化。

近期通過以下方面完成了相關(guān)的優(yōu)化:

讀場(chǎng)景

??拆分評(píng)論數(shù)、點(diǎn)贊數(shù)存儲(chǔ)從 ckv 遷移到 ckv+,不降冷,盡可能保障這兩個(gè)數(shù)據(jù)可用性;

??評(píng)論數(shù)增加本地緩存,增加版本號(hào),保障用戶體驗(yàn)無異常且評(píng)論數(shù)的高吞吐量;

??前端保護(hù)后端,合理化請(qǐng)求時(shí)機(jī),并在前端有數(shù)據(jù)情況下,遇到評(píng)論數(shù)或列表拉取異常時(shí),前端不彈異常,減少異常感知;

??前端優(yōu)化頁面體驗(yàn),提升秒開率,提升用戶體驗(yàn)。

寫場(chǎng)景

?? 拆分評(píng)論寫場(chǎng)景邏輯,保障核心路徑簡(jiǎn)化,優(yōu)先保障寫 mongo 速度和吞吐量,減少消息堆積概率;

?? 增加優(yōu)先級(jí)隊(duì)列,保障藝人核心體驗(yàn)無阻塞;

?? 完善相關(guān)工具建設(shè),隨時(shí)可以跟進(jìn)相關(guān)數(shù)據(jù)或運(yùn)營(yíng)訴求,提升運(yùn)營(yíng)效率。

壓測(cè)

??讀寫場(chǎng)景常規(guī)壓測(cè),確保壓測(cè)出業(yè)務(wù)瓶頸在運(yùn)營(yíng)場(chǎng)景需要情況下,能快速通過平行擴(kuò)容,保障系統(tǒng)可用性。

通過一系列流程和架構(gòu)優(yōu)化,評(píng)論系統(tǒng)可用性得到進(jìn)一步提升,相信在未來運(yùn)營(yíng)場(chǎng)景能很好地保障用戶體驗(yàn)。歡迎各位在評(píng)論區(qū)交流討論。以上就是本篇文章的全部?jī)?nèi)容了,如果文章對(duì)你有幫助,歡迎轉(zhuǎn)發(fā)分享。

你親歷過哪些考驗(yàn)項(xiàng)目高并發(fā)/高可用的場(chǎng)景?你有什么可以分享的高并發(fā)/高可用經(jīng)驗(yàn)嗎?歡迎留言。我們將挑選一則最有趣的答案,為其留言者送出騰訊定制毛毯。8月16日中午12點(diǎn)開獎(jiǎng)。

關(guān)注并星標(biāo)騰訊云開發(fā)者

第一時(shí)間看鵝廠架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)

標(biāo)簽:

推薦文章

X 關(guān)閉

X 關(guān)閉