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 等组件的线程池管理(调参、监控报警)
v1.0.8 开始,依赖包的 groupId 从之前的 io.github.lyh200 改为 cn.dynamictp ,对使用者透明。
距离 v1.0.7 发布已经有差不多 2 个月时间,这个里程碑版本新增了好些功能,同时优化重构了一些代码设计,欢迎大家升级体验哦!
新增内存安全队列 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 类新增一些内存安全快捷创建线程池方法
兼容 JDK11 当前要设置核心线程数不能大于上次设置的最大线程数限制
修复核心线程预热设置 preStartAllCoreThreads 不生效问题
修复 Hystrix 线程池获取失败 & 调参被覆盖问题
修复采集类型为 logging 模式时,配置更新后日志输出到应用日志中的问题
重构 logging 模块,去掉事件监听依赖
重构抽象 adapter 模块代码
责任链模式重构 notify 模块
example 添加 Hystrix 线程池的测试例子
低版本 Apollo 配置文件格式兼容
Undertow 容器开启活跃线程池数采集功能
Endpoint 端点接口支持三方中间件线程池指标数据获取
优化三方中间件参数刷新逻辑,增加校验判断逻辑及日志输出
各模块代码优化
目前累计 1.6k star ,感谢你的 star ,欢迎 pr ,业务之余一起给开源贡献一份力量
gitee 地址:https://gitee.com/dromara/dynamic-tp
github 地址:https://github.com/dromara/dynamic-tp
看到这儿,方便的话给项目一个 star ,你的支持是我们前进的动力!
使用过程中有任何问题,或者对项目有什么想法或者建议,可以加入社群,跟群友一起交流讨论。
微信群已满 200 人,可以加我个人微信拉群(备注:dynamic-tp )。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.