別在簡歷上寫 CRUD 項目了,來個動態(tài)線程池不香嗎
又到了項目推薦專欄啦,相比于業(yè)務(wù)類項目,輪子類項目或者工具類項目其實會更受歡迎,今天推薦兩款動態(tài)線程池,文檔都都比較全。目前開源的動態(tài)線程池也不算少,其實都是基于美團的那個思路,底層原理不算很難,所以上手難度比較低,算是性價比很高的項目了。
動態(tài)線程池 1:DynamicTp
項目地址:
- Github:https://github.com/dromara/dynamic-tp
- 教程地址:https://dynamictp.cn/guide/other/articles.html
項目架構(gòu):
項目簡介:基于配置中心的輕量級動態(tài)線程池,內(nèi)置監(jiān)控告警功能,集成常用中間件線程池管理,可通過SPI自定義擴展實現(xiàn),目前最新版本 v1.1.0 具有以下特性
- 代碼零侵入
- 通知告警:已支持企業(yè)微信、釘釘、飛書、郵件報警,同時提供 SPI 接口可自定義擴展實現(xiàn)
- 運行監(jiān)控:定時采集線程池指標(biāo)數(shù)據(jù),支持通過 MicroMeter、JsonLog 日志輸出、Endpoint 三種方式,可通過 SPI 接口自定義擴展實現(xiàn)
- 任務(wù)增強:提供任務(wù)包裝功能
- 多配置中心支持:已支持 Nacos、Apollo、Zookeeper、Consul、Etcd、Polaris,同時也提供 SPI 接口可自定義擴展實現(xiàn)
- 中間件線程池管理:集成管理常用第三方組件的線程池,已集成 Tomcat、Jetty、Undertow、Dubbo、RocketMq、Hystrix、Grpc、Motan、Okhttp3、Brpc、Tars、SofaRpc、RabbitMq 等組件的線程池管理(調(diào)參、監(jiān)控報警)
- 輕量簡單:基于 SpringBoot 實現(xiàn),引入 starter,接入只需簡單 4 步就可完成,順利 3 分鐘搞定
- 多模式:參考 Tomcat 線程池提供了 IO 密集型場景使用的 EagerDtpExecutor 線程池
- 兼容性:JUC 普通線程池和 Spring 中的 ThreadPoolTaskExecutor 也可以被框架監(jiān)控,@Bean 定義時加 @DynamicTp 注解即可
- 可靠性:框架提供的線程池實現(xiàn) Spring 生命周期方法,可以在 Spring 容器關(guān)閉前盡可能多的處理隊列中的任務(wù)
- 高可擴展:框架核心功能都提供 SPI 接口供用戶自定義個性化實現(xiàn)(配置中心、配置文件解析、通知告警、監(jiān)控數(shù)據(jù)采集、任務(wù)包裝等等)
代碼結(jié)構(gòu):
動態(tài)線程池 2:Hippo4j
項目地址:
- Github:https://github.com/opengoofy/hippo4j
- 教程地址:https://hippo4j.cn/docs/user_docs/intro
項目架構(gòu):
項目簡介:動態(tài)可觀測線程池,提高系統(tǒng)運行保障能力,提供以下功能支持:
- 全局管控 - 管理應(yīng)用線程池實例。
- 動態(tài)變更 - 應(yīng)用運行時動態(tài)變更線程池參數(shù),包括但不限于:核心、最大線程數(shù)、阻塞隊列容量、拒絕策略等。
- 通知報警 - 內(nèi)置四種報警通知策略,線程池活躍度、容量水位、拒絕策略以及任務(wù)執(zhí)行時間超長。
- 數(shù)據(jù)采集 - 支持多種方式采集線程池數(shù)據(jù),包括但不限于:日志、內(nèi)置采集、Prometheus、InfluxDB、ElasticSearch 等。
- 運行監(jiān)控 - 實時查看線程池運行時數(shù)據(jù),自定義時間內(nèi)線程池運行數(shù)據(jù)圖表展示。
- 功能擴展 - 支持線程池任務(wù)傳遞上下文;項目關(guān)閉時,支持等待線程池在指定時間內(nèi)完成任務(wù)。
- 多種模式 - 內(nèi)置兩種使用模式:依賴配置中心 和 無中間件依賴。
- 容器管理 - Tomcat、Jetty、Undertow 容器線程池運行時查看和線程數(shù)變更。
- 框架適配 - Dubbo、Hystrix、RabbitMQ、RocketMQ 等消費線程池運行時數(shù)據(jù)查看和線程數(shù)變更。
- 變更審核 - 提供多種用戶角色,普通用戶變更線程池參數(shù)需要 Admin 用戶審核方可生效。
- 動態(tài)化插件 - 內(nèi)置多種線程池插件,支持用戶自定義插件以及運行時擴展。
- 多版本適配 - 經(jīng)過實際測試,已支持客戶端 SpringBoot 1.5.x => 2.7.5 版本(更高版本未測試)