動態執行緒池框架 DynamicTp v1.0.6版本發布。還在為Dubbo執行緒池耗盡煩惱嗎?還在為Mq消費積壓煩惱嗎?
DynamicTp 簡介
DynamicTp 是一個基於配置中心實現的輕量級動態執行緒池管理工具,主要功能可以總結為 動態調參、通知報警、運行監控、三方包執行緒池管理等幾大類。
經過幾個版本迭代,目前最新版本v1.0.6具有以下特性
特性 ✅
-
程式碼零侵入:所有配置都放在配置中心,對業務程式碼零侵入
-
輕量簡單:基於 springboot 實現,引入 starter,接入只需簡單4步就可完成,順利3分鐘搞定
-
高可擴展:框架核心功能都提供 SPI 介面供用戶自定義個性化實現(配置中心、配置文件解析、通知告警、監控數據採集、任務包裝等等)
-
線上大規模應用:參考美團執行緒池實踐,美團內部已經有該理論成熟的應用經驗
-
多平台通知報警:提供多種報警維度(配置變更通知、活性報警、容量閾值報警、拒絕觸發報警、任務執行或等待超時報警),已支援企業微信、釘釘、飛書報警,同時提供 SPI 介面可自定義擴展實現
-
監控:定時採集執行緒池指標數據,支援通過 MicroMeter、JsonLog 日誌輸出、Endpoint 三種方式,可通過 SPI 介面自定義擴展實現
-
任務增強:提供任務包裝功能,實現TaskWrapper介面即可,如 TtlTaskWrapper 可以支援執行緒池上下文資訊傳遞,以及給任務設置標識id,方便問題追蹤
-
兼容性:JUC 普通執行緒池也可以被框架監控,@Bean 定義時加 @DynamicTp 註解即可
-
可靠性:框架提供的執行緒池實現 Spring 生命周期方法,可以在 Spring 容器關閉前儘可能多的處理隊列中的任務
-
多模式:參考Tomcat執行緒池提供了 IO 密集型場景使用的 EagerDtpExecutor 執行緒池
-
支援多配置中心:基於主流配置中心實現執行緒池參數動態調整,實時生效,已支援 Nacos、Apollo、Zookeeper、Consul,同時也提供 SPI 介面可自定義擴展實現
-
中間件執行緒池管理:集成管理常用第三方組件的執行緒池,已集成Tomcat、Jetty、Undertow、Dubbo、RocketMq、Hystrix等組件的執行緒池管理(調參、監控報警)
官網上線
隨著v1.0.6的發布我們上線了DynamicTp官網://dynamictp.cn
介紹文檔、使用說明等都可以查看官網了解更多,以後新特性也會優先發布到官網上
歡迎大家體驗 👏🏻
v1.0.6 發布記錄
距離v1.0.5發布已經有差不多2個月時間,這個版本框架源碼調整還是比較大的,重構了好一些功能,主要是圍繞第三方中間件執行緒池集成來改動的,是向前兼容的,同時修復了三個小bug。
如果你有下述痛點,快快升級體驗吧。
1)如果你在使用 Dubbo,那麼你大概率遇到過 Dubbo 執行緒池耗盡的情況,是不是很煩惱呢?嘗試使用下 DynamicTp 的 Dubbo 執行緒池管理功能,結合告警、實時監控、動態調參等功能儘可能降低 Dubbo 執行緒池耗盡,請求拒絕的風險。
2)mq 應該是很多互聯網系統都會使用到的中間件,使用 mq 經常會遇到的其中一個問題就是消息積壓問題,具體啥原因導致積壓需要具體問題具體分析,就RocketMq來說,消費端是使用執行緒池進行處理消息的,所以說執行緒池的設置也會直接或者間接影響到消費速度,需要對此進行監控、告警、以及動態調參,儘可能降低因執行緒池設置而導致的積壓風險。
注意:springboot 內置的三大 webserver 集成包默認會引入,不需要額外引入,其他三方組件的包需要自己引入,具體查看官網
Features
-
報警渠道接入飛書
-
支援 Apache Dubbo & Alibab Dubbo 服務端提供端執行緒池管理
-
支援 RocketMq 消費端執行緒池管理
-
支援 Hystrix 執行緒池管理
-
支援 SpringBoot 內置三大WebServer(Tomcat、Jetty、Undertow)執行緒池管理
-
增加執行緒池別名配置,提升告警資訊可讀易懂性
-
提供任務包裝類NamedRunable,提交任務時設置標識名稱,方便問題追蹤
-
告警項自定義配置,不配置的項用默認值
BugFix
-
修復並發導致通知報警資訊發送多條的問題
-
修復通知渠道配置修改不能動態更新問題
-
修復釘釘手機端報警資訊高亮失效問題
Refactor
-
重構部分通知告警模組實現,支援三方中間件通知告警
-
重構調整 adapter、starter 模組程式碼組織結構
項目地址
目前累計 1.3k star,感謝你的star,歡迎pr,業務之餘一起給開源貢獻一份力量
gitee地址://gitee.com/dromara/dynamic-tp
github地址://github.com/dromara/dynamic-tp
加入社群
使用過程中有任何問題,或者對項目有什麼想法或者建議,可以加入社群,跟群友一起交流討論。
微信群已滿200人,可以加我個人微信拉群(備註:dynamic-tp)。