日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

轉轉游戲MQ重構:思考與心得之旅

來源: 責編: 時間:2024-06-27 07:54:40 227觀看
導讀1 背景游戲業務自 2017 年啟航,至今已近乎走過七個春秋,歷經漫長歲月的發展,不知不覺間背負起沉重的歷史包袱。猶如一棵大樹,既有繁茂精壯的枝椏,亦有諸多枯敗凋零的枝葉。此文主要聚焦于商品更新 MQ 消費這一細微模塊,詳述

1 背景

游戲業務自 2017 年啟航,至今已近乎走過七個春秋,歷經漫長歲月的發展,不知不覺間背負起沉重的歷史包袱。猶如一棵大樹,既有繁茂精壯的枝椏,亦有諸多枯敗凋零的枝葉。此文主要聚焦于商品更新 MQ 消費這一細微模塊,詳述游戲業務如何對原有代碼予以重構,令游戲這棵大樹重煥蓬勃生機。yLJ28資訊網——每日最新資訊28at.com

1.1 起始之由

一日,驟然收到線上對下游接口 RPC 調用限流之警報,限流警報閾值為600k/min。遂著手排查觸發限流警報之因由。追根溯源,發覺乃外部存有更新操作,而更新接口調用閾值大約3K/min。明明更新流量不高,緣何觸發限流?于是開啟了對系統的調研與排查。yLJ28資訊網——每日最新資訊28at.com

1.2 重構前現狀

經過對限流原因的初步探索,我們進一步對商品消費 MQ 進行了全面梳理,發現游戲已有19個訂閱商品更新 MQ 的 Consumer,分布在不同集群。這些 Consumer 各自存有內部的查詢與更新相關操作,因其部分更新操作會催生新的 Message,致使接口調用進一步擴增。yLJ28資訊網——每日最新資訊28at.com

調研還發現有的廢棄 Consumer 還在線上持續消費,有的相同的消費邏輯被多個 Consumer 在消費。yLJ28資訊網——每日最新資訊28at.com

針對上面問題簡單梳理總結,問題如下:yLJ28資訊網——每日最新資訊28at.com

圖片圖片yLJ28資訊網——每日最新資訊28at.com

a. 邏輯分散,可維護性差yLJ28資訊網——每日最新資訊28at.com

b. 服務調用量成倍放大yLJ28資訊網——每日最新資訊28at.com

c. 存在并發更新和覆蓋的情況yLJ28資訊網——每日最新資訊28at.com

d. 存在廢棄或者重復消費情況yLJ28資訊網——每日最新資訊28at.com

1.3 問題分析

為什么會形成這樣的現狀?yLJ28資訊網——每日最新資訊28at.com

作者認為:前期需求快速迭代,新增新的 Consumer 可迅速響應需求,且開發便捷。然而,伴隨需求的演變與迭代,新增的 Consumer 漸多,需求與人員的變更,使得系統全貌愈發難以全面掌控。不斷變更的邏輯,致使整個系統的維護愈發艱難,從而衍生出形形色色的問題。yLJ28資訊網——每日最新資訊28at.com

若要降低 MQ 相關接口調用量,有兩個核心要點:其一,減少查詢,實現數據復用;其二,減少更新接口調用,抑制新的 Message 產生。但當下系統已然如此分散,于現有結構上極難獲取出色的解決方案。欲改變當前此種狀況,需要全新的結構,對原有 MQ 消費邏輯進行重構。借由新的結構,不但能夠化解當下的問題,還能夠構建新的約束,引導未來新的功能撰寫方式,使整個系統更為健康穩定。yLJ28資訊網——每日最新資訊28at.com

2 重構

2.1 目標

在著手重構之前,最為關鍵的是明晰目標。目標能夠輔助我們擬定方案,明確范圍,指引項目落地而不偏離正軌。yLJ28資訊網——每日最新資訊28at.com

a. 合理的結構yLJ28資訊網——每日最新資訊28at.com

b. 優化重復無效消費邏輯yLJ28資訊網——每日最新資訊28at.com

c. 提高消費能力yLJ28資訊網——每日最新資訊28at.com

d. 邏輯優化yLJ28資訊網——每日最新資訊28at.com

e. 構建新體系yLJ28資訊網——每日最新資訊28at.com

期望通過合理的代碼架構,令消費商品 MQ 消息的邏輯高度內聚且低耦合、各個類及方法的職責清晰明確。重構并非對老系統的簡單復制,更肩負著為系統未來擴展定義新的約束規范。恰似于這棵游戲大樹中萌生出新的枝干與分支,決定著后續細枝的生長方向。yLJ28資訊網——每日最新資訊28at.com

除了架構合理,還需優化解決此前的重復和無效消費的情況,提升整體消費能力,解決原先接口調用放大的問題。此外,在調研中發現系統存在一些已下線的廢棄邏輯和部分有問題的代碼,趁此次重構之機予以優化。(注:通常不建議在重構中修改邏輯,對于修改邏輯務必要進行充分測試,否則可能引入新的系統 Bug)yLJ28資訊網——每日最新資訊28at.com

2.2 制定方案

重構的總體方案主要由三部分構成:架構設計、實施計劃、測試計劃。yLJ28資訊網——每日最新資訊28at.com

2.2.1 架構設計

圖片圖片yLJ28資訊網——每日最新資訊28at.com

總體架構主要運用享元設計模式和策略設計模式,整個架構自上而下由三部分組成。yLJ28資訊網——每日最新資訊28at.com

a. 數據預處理yLJ28資訊網——每日最新資訊28at.com

b. 按分類調用Handler進行消費yLJ28資訊網——每日最新資訊28at.com

c. 收攏調用更新接口yLJ28資訊網——每日最新資訊28at.com

a:數據預處理主要負責過濾和預查詢數據。包含批量消費 MQ 消息,濾除非游戲的消息,調用批查詢接口,預處理后續可能重復處理的邏輯,減少重復查詢,提升接口效率。yLJ28資訊網——每日最新資訊28at.com

b:主要是按分類抽取 Handler 和公共 Handler,以使職責清晰分明。抽取公共 Handler 以處理一些公共邏輯,例如記錄埋點日志等。各個分類的 Handler 僅處理本分類的業務邏輯,實現邏輯解耦,提升可維護性。為方便切面的使用以及增強相關功能的內聚性,在 Handler 之下額外抽取了一層 Manage 層。Manage 層主要負責實現具體的消費邏輯,并提供可復用組件,令邏輯更具內聚性。yLJ28資訊網——每日最新資訊28at.com

c:對中臺商品相關的更新邏輯予以收攏,其主要目的在于減少更新接口的調用。(由于這些更新會產生新的 Message,故而通過調用批量接口的方式,來降低更新接口的調用次數,進而有效解決接口調用頻率放大的問題)yLJ28資訊網——每日最新資訊28at.com

2.2.2 實施計劃

我們將整個重構劃分為以下三期來實現。yLJ28資訊網——每日最新資訊28at.com

圖片圖片yLJ28資訊網——每日最新資訊28at.com

第一期和第二期yLJ28資訊網——每日最新資訊28at.com

第一期:主要針對非核心業務 MQ 邏輯進行遷移重構。非核心業務灰度上線,控制影響范圍,迅速驗證架構的可行性與穩定性。yLJ28資訊網——每日最新資訊28at.com

第二期:核心業務相關 MQ 遷移重構。灰度上線,關注對核心業務的影響。完成此步基本完成全部業務邏輯遷移。yLJ28資訊網——每日最新資訊28at.com

第三期第三期yLJ28資訊網——每日最新資訊28at.com

第三期:對結構進行微調,主要是對相關功能進一步拆解、重構,使功能內部更為內聚,降低耦合,令整個系統最終達成設計之初的預期效果。yLJ28資訊網——每日最新資訊28at.com

分多步進行重構的益處主要在于控制影響范圍,能夠迅速見到成效。每次改動范圍有限,更易于定位問題,也能夠極為便利地支持產品需求。yLJ28資訊網——每日最新資訊28at.com

2.2.3 測試計劃

每次上線之前,核心主要通過三種測試,即白盒測試、黑盒測試、日志對比。yLJ28資訊網——每日最新資訊28at.com

a:黑盒測試,校驗新老流程處理后的數據是否一致。yLJ28資訊網——每日最新資訊28at.com

b:白盒測試。測試每一行代碼的覆蓋率,并觀察新老流程數據是否一致。yLJ28資訊網——每日最新資訊28at.com

c:調用接口前數據對比。在調用更新接口之處打印日志,對比新老流程調用更新接口的傳參是否一致。yLJ28資訊網——每日最新資訊28at.com

測試僅是一方面,上線后皆需關注整個系統的運行狀況,并做好關鍵方面的報警。此外,會同步一線客服人員,收集是否存在用戶反饋的問題,依照原來Consumer的顆粒度進行灰度。yLJ28資訊網——每日最新資訊28at.com

2.3 部分細節設計

統一冪等灰度切面處理

此系統乃是一個與 MQ 消費相關的重構項目,在每個消費模塊皆需確保消費的冪等性,然而遷移而來的 Consumer 眾多,若在每個地方皆書寫一遍冪等相關處理,極為不便。我主要借助了 Spring 的 AOP 能力來達成。yLJ28資訊網——每日最新資訊28at.com

圖片圖片yLJ28資訊網——每日最新資訊28at.com

主要是定義規范,定義冪等注解、統一返回值(泛型)以及撰寫注解處理類。通過環繞注解來實現,處理類在處理之前會進行規范檢測,不規范則直接放過(相當于使用注解失效),消費成功后我們會將返回結果通過緩存存儲起來,下次再來時,直接消費成功,無需重復處理,達成處理冪等性和減少重復消費的情況。冪等緩存的顆粒度為msgId。(灰度控制方案原理相同,此處不再贅述)yLJ28資訊網——每日最新資訊28at.com

異常失敗應對

圖片圖片yLJ28資訊網——每日最新資訊28at.com

我們在設計下游商品更新時進行了收攏處理,以方便操作,但也帶來一個問題,即可能我們的業務信息已更新,而下游可能處理失敗,對此我們使用轉轉封裝的基于 RocketMQ 的消費重試組件來實現。(簡單來講,同步消費失敗,就會利用 RocketMQ,創建一個MQ消費信息來異步處理)。未更新成功的數據,通過 MQ 重試來保障消費成功。yLJ28資訊網——每日最新資訊28at.com

更新失敗報警更新失敗報警yLJ28資訊網——每日最新資訊28at.com

我們還設有報警機制,未更新商品的信息,通過企業微信發送報警,以提示技術人員,并提供商品數據信息,方便在出現特殊異常情況時,人工兜底補足來處理此類情形。yLJ28資訊網——每日最新資訊28at.com

數據隔離

新的Consumer在消費時提供了單獨的線程池處理,便于監控邏輯處理消費情況,提升整體邏輯處理能力的并發度。yLJ28資訊網——每日最新資訊28at.com

線程池監控線程池監控yLJ28資訊網——每日最新資訊28at.com

數據監控

建立豐富的監控指標和報警通知機制。通過日志查詢平臺、數據看板、異常企業微信報警通知,輔助我們在上線后實時觀察新流程的具體狀況,迅速定位問題。yLJ28資訊網——每日最新資訊28at.com

MQ生成消費監控MQ生成消費監控yLJ28資訊網——每日最新資訊28at.com

上游查詢失敗報警上游查詢失敗報警yLJ28資訊網——每日最新資訊28at.com

3 總結

數據效果

項目上線后,下游核心接口的調用量顯著降低,降幅 50%至80% 之間。其中,更新類接口的調用量降低了 80%,查詢類接口的調用量減少了 50%。yLJ28資訊網——每日最新資訊28at.com

思考與總結

  1. 明確系統重構的緣由,主要涵蓋兩方面。(現有系統存在問題需解決,或者現有系統限制了新的業務發展)
  2. 務必要充分了解自身的系統。在重構之前,對于具體的業務邏輯和影響范圍等信息需進行直接評估與確定。唯有明晰系統的原貌,方能依據系統的現狀設計全新的技術方案。
  3. 考慮未來發展,定義好的規范。好的規范和結構,在未來系統迭代發展起一個引導作用。引導大家按相同的思路開發,更好的協作和支持業務需求。

關于作者yLJ28資訊網——每日最新資訊28at.com

許志芳,轉轉訂單業務后端研發工程師yLJ28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-96749-0.html轉轉游戲MQ重構:思考與心得之旅

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何解決“Future不能安全地在線程之間發送”的問題?

下一篇: OpenAI宣布斷服,警惕血本無歸

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲黄网站黄| 国产精品福利网| 久久久午夜电影| 欧美不卡一区| 欧美日韩亚洲综合在线| 国产精品久久久久国产精品日日| 国产视频久久久久久久| 亚洲国产综合91精品麻豆| 在线视频欧美日韩精品| 久久成人亚洲| 欧美激情偷拍| 国产伦精品一区| 一区二区三区在线看| 99riav久久精品riav| 午夜精品免费| 欧美91精品| 美女日韩欧美| 国产精品成人久久久久| 激情婷婷亚洲| 一区二区三欧美| 久久久午夜电影| 欧美三级在线| 狠狠综合久久av一区二区小说| 亚洲精品免费电影| 欧美伊人久久大香线蕉综合69| 欧美高清在线视频观看不卡| 国产精品尤物| 亚洲黄色免费| 欧美影院在线| 欧美午夜国产| 在线看片一区| 亚洲欧美日韩精品综合在线观看| 美女脱光内衣内裤视频久久影院| 国产精品福利网| 亚洲人成77777在线观看网| 欧美一区二区视频在线观看| 欧美日韩福利在线观看| 黄页网站一区| 亚洲欧美日韩综合国产aⅴ| 欧美激情中文字幕乱码免费| 国内精品视频在线播放| 亚洲一区二区在线| 欧美精品xxxxbbbb| 一区二区三区无毛| 欧美一级久久久久久久大片| 欧美日韩在线播放一区二区| 亚洲黄色天堂| 久久在线免费| 国产在线精品成人一区二区三区 | 久久xxxx精品视频| 欧美午夜在线一二页| 亚洲欧洲在线一区| 久久这里有精品视频| 国产午夜精品视频免费不卡69堂| 99精品久久久| 欧美黑人在线观看| 在线免费观看日韩欧美| 久久精品30| 国产女主播一区二区| 亚洲视频你懂的| 欧美日韩国产探花| 亚洲精品中文字| 欧美国产亚洲精品久久久8v| 在线观看日韩av电影| 久久久久国内| 国产在线精品一区二区夜色| 欧美与欧洲交xxxx免费观看| 国产精品一区二区久激情瑜伽| 亚洲婷婷免费| 国产精品久久波多野结衣| 中日韩在线视频| 欧美日韩午夜剧场| 99国内精品久久| 欧美日韩亚洲91| 99精品视频免费观看| 欧美日韩国产一区二区三区地区| 老妇喷水一区二区三区| 国产精品综合av一区二区国产馆| 亚洲一区二区不卡免费| 国产精品www994| 亚洲一区二区三区四区五区午夜| 欧美三日本三级三级在线播放| 国产精品99久久久久久有的能看| 欧美日韩在线一区二区三区| 中国成人黄色视屏| 国产精品香蕉在线观看| 欧美一区二区三区免费视| 国产午夜亚洲精品不卡| 久久精品在线视频| 伊人久久av导航| 欧美成在线观看| 日韩午夜免费视频| 欧美日韩一区在线| 亚洲伊人伊色伊影伊综合网| 国产精品久久久久久妇女6080| 亚洲一区黄色| 国产精品入口日韩视频大尺度| 亚洲欧美综合精品久久成人| 国产三级精品三级| 久久精品国产综合| 亚洲第一主播视频| 欧美日本一道本| 亚洲小说欧美另类婷婷| 国产老女人精品毛片久久| 久久激情五月婷婷| 在线观看欧美成人| 欧美日本三区| 午夜精品久久一牛影视| 激情综合久久| 欧美人成网站| 亚洲欧美在线网| 黄色一区二区在线观看| 欧美高清在线观看| 一本久久知道综合久久| 国产精品亚洲综合天堂夜夜| 久久精品一区中文字幕| 亚洲欧洲精品一区二区三区| 国产精品久久久久77777| 久久国产精品亚洲77777| 91久久精品www人人做人人爽| 欧美视频中文一区二区三区在线观看 | 亚洲欧美日本国产有色| 狠狠色丁香久久婷婷综合丁香| 欧美freesex8一10精品| 亚洲图片你懂的| 国产一区欧美日韩| 欧美精品色一区二区三区| 亚洲在线一区二区三区| 伊人久久男人天堂| 欧美日韩免费观看一区 | 欧美日韩在线视频观看| 久久er99精品| 99爱精品视频| 国精产品99永久一区一区| 欧美乱妇高清无乱码| 香蕉久久国产| 亚洲国产裸拍裸体视频在线观看乱了| 欧美亚男人的天堂| 另类人畜视频在线| 亚洲影院免费| 亚洲国产视频a| 国产精品夜夜夜| 欧美精品激情在线| 欧美有码在线观看视频| 亚洲免费电影在线| 国语自产精品视频在线看8查询8| 欧美日韩精品一本二本三本| 久久九九电影| 亚洲新中文字幕| 亚洲激情黄色| 国内外成人免费激情在线视频| 欧美午夜激情视频| 男男成人高潮片免费网站| 香蕉亚洲视频| 99精品久久| 亚洲国产精品一区二区www| 国产免费观看久久| 欧美日韩一级黄| 免费成人毛片| 久久精品av麻豆的观看方式| 一本大道久久a久久综合婷婷| 一区二区三区在线免费观看| 国产精品欧美激情| 欧美区一区二区三区| 久久亚洲精品伦理| 性8sex亚洲区入口| 在线亚洲+欧美+日本专区| 亚洲国产日韩欧美| 国产一区91| 国产精品一区二区三区四区| 欧美日韩免费在线观看| 欧美成人精品| 麻豆久久婷婷| 久久久久久久999| 亚洲欧美激情视频| 一本色道久久| 亚洲精品日韩在线| 亚洲国产免费看| 久久久久国产精品一区三寸| 国产精品99久久久久久宅男 | 国产精品五区| 国产精品成人va在线观看| 欧美日韩精品久久久| 欧美激情五月| 欧美高清日韩| 欧美国产一区视频在线观看| 美女网站久久| 久久影院午夜论| 久久免费99精品久久久久久| 久久成人在线| 欧美在线视频不卡| 欧美一区午夜精品| 欧美中文字幕不卡| 欧美在线免费| 久久精品国产清自在天天线| 欧美一区二区成人6969| 欧美一区二区啪啪| 午夜性色一区二区三区免费视频| 亚洲在线第一页| 午夜精品久久久久久久蜜桃app| 亚洲欧美在线一区二区| 欧美一区二区在线播放| 欧美在线综合| 久久久久在线观看|