新人熟悉項目必備工具!基於SpringAOP開發的一款方法調用鏈分析插件,簡單到只須要一個註解,異步非阻塞,完美嵌入Spring Cloud、Dubbo項目!不再用擔憂搞不懂項目!git
不少新人進入一家新公司後,最頭疼的就是如何快速瞭解公司的業務和項目架構。github
由於文檔不多,沒有文檔,或者是文檔嚴重落伍, 根本無法看;若是你碰到一個特別熱心的老員工,事無鉅細地給你講,隨時在你身邊答疑解惑, 那簡直是天大的好運氣, 現實是你們都很忙,沒人給你講解。web
很快就要深刻項目作開發了,怎麼辦呢?算法
我在加入新公司後,就遇到了悲催的狀況。因而,我就作了這款可視化流程分析插件!幫助更多入職新人快速熟悉業務。spring
演示網址:http://116.85.23.6:8521/projecttree數據庫
<dependency> <groupId>cn.yueshutong</groupId> <artifactId>spring-project-tree</artifactId> <version>0.0.5.RELEASE</version> </dependency>
若是你的項目是Spring Boot,那麼使用會很是簡單,只須要一個註解便可。json
@EnableProjectTree(value = "")註解參數爲pointcut表達式,完整代碼以下:安全
@SpringBootApplication @EnableProjectTree("execution(* com.example.springboot.demo..*(..))") public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } }
注:重構後的Project Tree不止增長了對分佈式接口的監控,還增長了pointcut表示式。springboot
啓動你的項目,首先訪問你項目的某個接口,使其執行被監控的方法。而後訪問localhost:8080/projecttree
查看網頁。數據結構
接口 | 說明 |
---|---|
/projecttree | 返回完整調用鏈視圖 |
/projecttree/all | 返回所有方法視圖 |
/projecttree/json | JSON形式的返回結果 |
/projecttree/{methodId} | 對某一方法的JSON結果 |
使用Shiro、Spring Securit等安全框架時,須要注意對此URL的權限控制。
若你的項目使用Jpa而且遇到Dao層接口注入失敗,Entity掃描失敗,能夠考慮使用@EntityScan和@EnableJpaRepositories註解。
如何下降對主流程的性能消耗?
使用單例線程池實現異步非阻塞模型,下降對主流程的性能影響。
爲何使用單例線程池?
首先只有一個線程的線程池實際是隊列+單線程,一個一個任務的進行執行,徹底知足本插件的使用需求,對性能的影響也降到最低。
基於內存的內嵌數據庫實現數據的快速讀寫,這裏不用擔憂數據過大問題,本插件基於方法調用鏈分析進行選擇性保存,理論上說,從接口開始,有多少流程分支,就有多少條數據記錄。佔用內存極小。
如何實現方法調用分析?
基於棧數據結構設計算法。
郵箱:yster@foxmail.com