1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 4254字,需瀏覽 9分鐘

         ·

        2023-08-09 16:15

        # 關(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 音樂自誕生以來(lái),已有多個(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ǔ)成本來(lái)抗住讀壓力。對(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)的可用性。隨著空降參與藝人粉絲越來(lái)越多,業(yè)務(wù)遇到新的挑戰(zhàn)。


        藝人空降評(píng)論區(qū)藝粉互動(dòng)效果不錯(cuò),越來(lái)越多藝人空降評(píng)論區(qū)。粉絲參與熱情高漲,讀寫流量節(jié)節(jié)高升,空降活動(dòng)導(dǎo)致評(píng)論系統(tǒng)挑戰(zhàn)越來(lái)越大,需要系統(tǒng)優(yōu)化保障服務(wù)質(zhì)量。我們通過如下方式來(lái)處理挑戰(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)無(wú)異常且評(píng)論數(shù)的高吞吐量;
        ??前端保護(hù)后端,合理化請(qǐng)求時(shí)機(jī),并在前端有數(shù)據(jù)情況下,遇到評(píng)論數(shù)或列表拉取異常時(shí),前端不彈異常,減少異常感知;
        ??前端優(yōu)化頁(yè)面體驗(yàn),提升秒開率,提升用戶體驗(yàn)。

        寫場(chǎng)景
        ?? 拆分評(píng)論寫場(chǎng)景邏輯,保障核心路徑簡(jiǎn)化,優(yōu)先保障寫 mongo 速度和吞吐量,減少消息堆積概率;
        ?? 增加優(yōu)先級(jí)隊(duì)列,保障藝人核心體驗(yàn)無(wú)阻塞;
        ?? 完善相關(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)一步提升,相信在未來(lái)運(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)


        瀏覽 1872
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产免费一本大道 | 在线免费毛片 | 天天干天天操综合 | 色视频国产 | 亚洲一区二区三区袜高跟 | 成人片全裸直播在线观看 | 男人插入女人下面 | chinese叫床对白videos | 黄片免费av | 欧美精品首页 |