历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8

2022-10-28,,,,

关于 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,业务之余一起给开源贡献一份力量

官网:https://dynamictp.cn

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

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

看到这儿,方便的话给项目一个star,你的支持是我们前进的动力!

历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8的相关教程结束。

《历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8.doc》

下载本文的Word格式文档,以方便收藏与打印。