<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          空降流量危機?QQ音樂升級架構應對高并發(fā)

          共 4254字,需瀏覽 9分鐘

           ·

          2023-08-09 16:15

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

          # 每周3 | 談談我在騰訊的架構設計經驗

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




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


          目前評論作為用戶社交重要場景以及藝粉互動(明星空降)重要場地,經常會有突發(fā)流量。為了更好地保障空降場景評論體驗,我們對評論系統(tǒng)進行充分的設計。


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


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



          評論寫涉及比較復雜的業(yè)務邏輯,整體流程包含:
          ?? 評論安全打擊;
          ?? 評論發(fā)布屬地信息查詢并記錄;
          ?? 評論是否需要置頂;
          ?? 評論是否樂評人評論。
          ?? ......

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


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

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

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


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

          采用上面的讀寫設計,基本能滿足日常空降場景評論系統(tǒng)的可用性。隨著空降參與藝人粉絲越來越多,業(yè)務遇到新的挑戰(zhàn)。


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

          ?? 增加寫消費效率:增加 mongo 存儲的存儲核數(shù),并增加消費并發(fā)度;
          ?? 讀服務平行擴容,并拆分緩存到更多的 key(uin%10等),防止熱 key 太集中,增加讀服務吞吐量;
          ?? 拆分讀服務和寫服務部署,防止讀寫互相影響;
          ?? 非關鍵場景限流,保障核心路徑的可用性。

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



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

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

          讀場景
          ??拆分評論數(shù)、點贊數(shù)存儲從 ckv 遷移到 ckv+,不降冷,盡可能保障這兩個數(shù)據可用性;
          ??評論數(shù)增加本地緩存,增加版本號,保障用戶體驗無異常且評論數(shù)的高吞吐量;
          ??前端保護后端,合理化請求時機,并在前端有數(shù)據情況下,遇到評論數(shù)或列表拉取異常時,前端不彈異常,減少異常感知;
          ??前端優(yōu)化頁面體驗,提升秒開率,提升用戶體驗。

          寫場景
          ?? 拆分評論寫場景邏輯,保障核心路徑簡化,優(yōu)先保障寫 mongo 速度和吞吐量,減少消息堆積概率;
          ?? 增加優(yōu)先級隊列,保障藝人核心體驗無阻塞;
          ?? 完善相關工具建設,隨時可以跟進相關數(shù)據或運營訴求,提升運營效率。

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

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

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






          關注并星標騰訊云開發(fā)者

          第一時間看鵝廠架構設計經驗


          瀏覽 1872
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一区二区大鸡巴操女女在线视频91 | 毛片毛片毛片毛片毛片 | 久久亚洲香蕉视频 | 五月丁香激情综合久久 | 亚洲高清无码免费视频 |