滴滴開源支撐業務代碼重構工具Rdebug

近日,滴滴在 GitHub 上開源後端研發、調試、測試的實用工具 Rdebug,全稱 Real Debugger,中文名 真・Debugger。使用真實的線上流量進行線下回放測試,提升研發效率、保障代碼質量,進而減少線上事故。

背景

隨着微服務架構的普及和應用,一個複雜的單體服務通常會被拆分成多個小而美的微服務。在享受微服務帶來便利的同時,也要接受因爲微服務改造帶來的問題:需要維護的服務數變多、服務之間 RPC 調用次數增加。

這就造成線下環境維護成本大大增加,其次線下環境涉及到的部門較多,維護一個長期穩定的線下環境也是一個挑戰;業務快速發展、需求不斷迭代,手寫單測又因複雜的業務邏輯以及複雜的服務調用需要 mock 多個下游服務,導致手寫和維護單測成本特別的高;手動構造數據,又不夠全面真實。以上問題都嚴重影響 RD 的研發效率,並且增加線上產生事故的隱患。

RD 迫切需要一個只需在本地部署代碼、不用搭建下游依賴、使用真實數據,進行快速開發、調試、測試的解決方案。Rdebug基於流量錄製、流量回放的思路,能夠巧妙的實現上述方案。

宗旨

提升研發效率、降低測試成本、縮短產品研發週期,保障代碼質量、減少線上事故。

image

使用全景圖

全新的研發體驗

  • 只需部署模塊代碼,無需搭建下游服務;
  • 在macOS本地回放,開發、調試、測試無需登錄遠程服務器;
  • 流量錄製支持常用協議,FastCGI、HTTP、Redis、Thrift、MySQL 等;
  • 回放速度快,單次回放秒級別。

路徑重定向

爲了方便 RD 在本地開發、測試,Rdebug 支持路徑重定向。
當線上部署路徑和本地代碼路徑不一致時,當代碼中存在大量線上路徑硬編碼時,無需入侵式修改代碼,只需要簡單的配置即可實現路徑重定向。
即代碼可以存放在任何路徑下回放。

時間偏移

流量回放時會自動把時間偏移到流量錄製的時間點。
在代碼中獲取時間時,會獲得錄製時間點之後的時間。所以,當業務接口對時間敏感時,也無需擔心。

文件Mock

流量回放支持文件 Mock,指定文件路徑和Mock的內容,即可快速實現文件Mock。
結合錄製上報功能,在線上上報配置讀取,在線下使用文件Mock實現配置“重現”。

Elastic搜索

對存儲在 Elastic 中的流量,支持 URI、輸入輸出關鍵詞、下游調用等多維度搜索。
回放支持指定文件,也支持上述搜索回放,使用體驗更佳。

Xdebug 調試

最高效的功能是 Xdebug 聯動調試,通過對代碼設置斷點即可使用線上流量進行調試。通過這種方式,可以用來研究代碼、排查問題、查看下游接口響應格式及數據等,是一個開發調試利器。

image

回放報告

回放報告,彙總線上線下的輸入、輸出、結果對比,一目瞭然。

image

下游調用報告,會列舉出所有的下游調用,包括協議、請求內容、匹配上的響應以及相識度。通過不同的背景顏色,標記出完全匹配的流量、存在噪點的調用、缺失的調用、新增的調用等。

image

結合 Xdebug 生成覆蓋率報告,能夠清楚的看到哪些代碼被執行、哪些代碼未被執行以及接口的覆蓋率情況。

image

有關安裝、使用過程以及常見問題解答,請查看以下鏈接:

GitHub:https://github.com/didi/rdebug
Wiki:https://github.com/didi/rdebug/wiki
Documentation:https://github.com/didi/rdebug/blob/master/doc/DocList.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章