歷時2月,動態執行緒池 DynamicTp 發布里程碑版本 V1.0.8

關於 DynamicTp

DynamicTp 是一個基於配置中心實現的輕量級動態執行緒池管理工具,主要功能可以總結為動態調參、通知報警、運行監控、三方包執行緒池管理等幾大類。

經過多個版本迭代,目前最新版本 v1.0.8 具有以下特性

特性

  • 程式碼零侵入:所有配置都放在配置中心,對業務程式碼零侵入

  • 輕量簡單:基於 springboot 實現,引入 starter,接入只需簡單4步就可完成,順利3分鐘搞定

  • 高可擴展:框架核心功能都提供 SPI 介面供用戶自定義個性化實現(配置中心、配置文件解析、通知告警、監控數據採集、任務包裝等等)

  • 線上大規模應用:參考美團執行緒池實踐,美團內部已經有該理論成熟的應用經驗

  • 多平台通知報警:提供多種報警維度(配置變更通知、活性報警、容量閾值報警、拒絕觸發報警、任務執行或等待超時報警),已支援企業微信、釘釘、飛書報警,同時提供 SPI 介面可自定義擴展實現

  • 監控:定時採集執行緒池指標數據,支援通過 MicroMeter、JsonLog 日誌輸出、Endpoint 三種方式,可通過 SPI 介面自定義擴展實現

  • 任務增強:提供任務包裝功能,實現TaskWrapper介面即可,如 MdcTaskWrapper、TtlTaskWrapper、SwTraceTaskWrapper,可以支援執行緒池上下文資訊傳遞

  • 兼容性:JUC 普通執行緒池和 Spring 中的 ThreadPoolTaskExecutor 也可以被框架監控,@Bean 定義時加 @DynamicTp 註解即可

  • 可靠性:框架提供的執行緒池實現 Spring 生命周期方法,可以在 Spring 容器關閉前儘可能多的處理隊列中的任務

  • 多模式:參考Tomcat執行緒池提供了 IO 密集型場景使用的 EagerDtpExecutor 執行緒池

  • 支援多配置中心:基於主流配置中心實現執行緒池參數動態調整,實時生效,已支援 Nacos、Apollo、Zookeeper、Consul、Etcd,同時也提供 SPI 介面可自定義擴展實現

  • 中間件執行緒池管理:集成管理常用第三方組件的執行緒池,已集成Tomcat、Jetty、Undertow、Dubbo、RocketMq、Hystrix等組件的執行緒池管理(調參、監控報警)

依賴 groupId 變更

v1.0.8開始,依賴包的 groupId 從之前的 io.github.lyh200 改為 cn.dynamictp,對使用者透明。

v1.0.8 發布記錄

距離 v1.0.7 發布已經有差不多 2 個月時間,這個裡程碑版本新增了好些功能,同時優化重構了一些程式碼設計,歡迎大家升級體驗哦!

Features

  • 新增記憶體安全隊列 MemorySafeLinkedBlockingQueue,感謝 @dragon-zhang 提供實現

  • WebServer 執行緒池管理支援 Reactive 環境下使用,感謝 @abbottliu.liu 提供實現

  • 支援 Dubbox 執行緒池管理,感謝 @Redick01 提供實現

  • 支援 Spring 中的 ThreadPoolTaskExecutor 執行緒池管理,感謝 @Redick01 提供實現

  • 支援 Etcd 配置中心接入,感謝 @Redick01 提供實現

  • 監控指標採集器新增輸出到應用日誌中的 InternalLogCollector,感謝 @Redick01 提供實現

  • 三方中間件執行緒池通知告警支援別名配置,感謝 @renbiao002 提供實現

  • 新增 extension 模組,放置一些擴展功能

  • 三方中間件執行緒池管理支援通知告警功能

  • 指標數據採集支援同時配置多種採集方式

  • 新增 MdcTaskWrapper 任務包裝器,支援 MDC 上下文傳遞

  • 新增 SwTraceTaskWrapper 任務包裝器,支援 Skywalking TID 傳遞

  • 新增通知告警集群限流插件,見 extension-limiter-redis 模組

  • ThreadPoolCreator 類新增一些記憶體安全快捷創建執行緒池方法

BugFix

  • 兼容 JDK11 當前要設置核心執行緒數不能大於上次設置的最大執行緒數限制

  • 修複核心執行緒預熱設置 preStartAllCoreThreads 不生效問題

  • 修復 Hystrix 執行緒池獲取失敗 & 調參被覆蓋問題

  • 修復採集類型為logging模式時,配置更新後日誌輸出到應用日誌中的問題

Refactor

  • 重構 logging 模組,去掉事件監聽依賴

  • 重構抽象 adapter 模組程式碼

  • 責任鏈模式重構 notify 模組

Optimize

  • example 添加 Hystrix 執行緒池的測試例子

  • 低版本 Apollo 配置文件格式兼容

  • Undertow 容器開啟活躍執行緒池數採集功能

  • Endpoint 端點介面支援三方中間件執行緒池指標數據獲取

  • 優化三方中間件參數刷新邏輯,增加校驗判斷邏輯及日誌輸出

  • 各模組程式碼優化

項目地址

目前累計 1.6k star,感謝你的star,歡迎pr,業務之餘一起給開源貢獻一份力量

官網//dynamictp.cn

gitee地址//gitee.com/dromara/dynamic-tp

github地址//github.com/dromara/dynamic-tp

看到這兒,方便的話給項目一個star,你的支援是我們前進的動力!