出品 | 滴滴技術git
前言:近日,滴滴在 GitHub 上開源後端研發、調試、測試的實用工具 Rdebug,全稱 Real Debugger,中文稱做真 · Debugger 。使用真實的線上流量進行線下回放測試,提高研發效率、保障代碼質量,進而減小事故。一塊兒來具體瞭解吧。github
隨着微服務架構的普及和應用,一個複雜的單體服務一般會被拆分紅多個小而美的微服務。在享受微服務帶來便利的同時,也要接受由於微服務改造帶來的問題:須要維護的服務數變多、服務之間 RPC 調用次數增長。後端
這就形成線下環境維護成本大大增長,其次線下環境涉及到的部門較多,維護一個長期穩定的線下環境也是一個挑戰;業務快速發展、需求不斷迭代,手寫單測又因複雜的業務邏輯以及複雜的服務調用須要 mock 多個下游服務,致使手寫和維護單測成本特別的高;手動構造數據,又不夠全面真實。以上問題都嚴重影響 RD 的研發效率,而且增長線上產生事故的隱患。
服務器
RD 迫切須要一個只需在本地部署代碼、不用搭建下游依賴、使用真實數據,進行快速開發、調試、測試的解決方案。Rdebug 基於流量錄製、流量回放的思路,可以巧妙的實現上述方案。架構
提高研發效率、下降測試成本、縮短產品研發週期,保障代碼質量、減小線上事故。微服務
全景圖工具
只需部署模塊代碼,無需搭建下游服務;測試
在 macOS 本地回放,開發、調試、測試無需登陸遠程服務器;編碼
流量錄製支持經常使用協議,FastCGI、HTTP、Redis、Thrift、MySQL 等;debug
回放速度快,單次回放秒級別。
爲了方便 RD 在本地開發、測試,Rdebug 支持路徑重定向。
當線上部署路徑和本地代碼路徑不一致時,當代碼中存在大量線上路徑硬編碼時,無需入侵式修改代碼,只須要簡單的配置便可實現路徑重定向。
即代碼能夠存放在任何路徑下回放。
流量回放時會自動把時間偏移到流量錄製的時間點。
在代碼中獲取時間時,會得到錄製時間點以後的時間。因此,當業務接口對時間敏感時,也無需擔憂。
流量回放支持文件 Mock,指定文件路徑和 Mock 的內容,便可快速實現文件 Mock。
結合錄製上報功能,在線上上報配置讀取,在線下使用文件Mock實現配置「重現」。
對存儲在 Elastic 中的流量,支持 URI、輸入輸出關鍵詞、下游調用等多維度搜索。
回放支持指定文件,也支持上述搜索回放,使用體驗更佳。
最高效的功能是 Xdebug 聯動調試,經過對代碼設置斷點便可使用線上流量進行調試。經過這種方式,能夠用來研究代碼、排查問題、查看下游接口響應格式及數據等,是一個開發調試利器。
回放報告,彙總線上線下的輸入、輸出、結果對比,一目瞭然。
下游調用報告,會列舉出全部的下游調用,包括協議、請求內容、匹配上的響應以及相識度。經過不一樣的背景顏色,標記出徹底匹配的流量、存在噪點的調用、缺失的調用、新增的調用等。
結合 Xdebug 生成覆蓋率報告,可以清楚的看到哪些代碼被執行、哪些代碼未被執行以及接口的覆蓋率狀況。
有關安裝、使用過程以及常見問題解答,請查看如下連接:
GitHub:github.com/didi/rdebug
Documentation:github.com/didi/rdebug…
同時歡迎加入「Rdebug 用戶交流羣」
請在滴滴技術公衆號後臺回覆「Rdebug」便可加入
掃碼關注「滴滴技術」公衆號,獲取更多最新最熱技術乾貨!定製禮品不按期奉上!