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