登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
我知道了
查看详情
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
程序开发
>
常用工具包
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
193
Star
2.4K
Fork
821
dromara
/
dynamic-tp
代码
Issues
46
Pull Requests
0
Wiki
统计
流水线
服务
Gitee Pages
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
我知道了,不再自动展开
标签
标签名
描述
提交信息
操作
v1.2.1
## 升级注意事项 - DtpEndpoint 端点名称修改 实时指标监控端点名称从 `dynamic-tp` 修改为 `dynamictp`,消除 springboot 的非法字符 warn 警告。 - 告警规则重构 v1.2.1 之前版本里告警规则比较简单,通过 `threshold` 和 `interval` 字段来控制。 ```yml dynamictp: # 全局配置 globalExecutorProps: # 线程池配置 > 全局配置 > 字段默认值 rejectedHandlerType: CallerRunsPolicy queueType: VariableLinkedBlockingQueue waitForTasksToCompleteOnShutdown: true awaitTerminationSeconds: 3 taskWrapperNames: ["swTrace", "ttl", "mdc"] queueTimeout: 300 runTimeout: 300 notifyItems: # 报警项,不配置自动会按默认值(查看源码NotifyItem类)配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警) - type: change interval: 10 - type: capacity # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类 threshold: 80 # 报警阈值,默认70,意思是队列使用率达到70%告警 interval: 120 # 报警间隔(单位:s),默认120 - type: liveness # 线程池活性 threshold: 80 # 报警阈值,默认 70,意思是活性达到70%告警 interval: 120 - type: reject # 触发任务拒绝告警 threshold: 1 # 默认阈值10 interval: 120 - type: run_timeout # 任务执行超时告警 threshold: 100 # 默认阈值10 interval: 120 - type: queue_timeout # 任务排队超时告警 threshold: 100 # 默认阈值10 interval: 120 ``` 比如对于 capacity 项:**语义为当线程池队列容量达到 80%时触发一次告警,告警后 120s 内再产生的报警保持静默。** 设计的比较草率,有几个问题: - 数据统计需要限定在一定的时间窗口内,过期需重新计数,此处 interval 只用在了静默处理上,没统计窗口的概念 - 只要阈值达到了就会产生一次报警,更好的做法应该是达到阈值的次数达到某个值才算一个异常,触发一次报警 - 无效告警多,静默不能关闭 在 v1.2.1 版本里,我们重构了告警规则,引入 `threshold`、`count`、`period`、`silencePeriod` 四个配置字段。 目前的告警语义:**对于某一个告警项,在一定的统计窗口(period)内,达到阈值(threshold)的次数达到某个值(count)时才算为一个有效的异常,触发一次报警。告警后(silencePeriod)内再产生的报警保持静默,且静默可以关闭。** ```yml dynamictp: globalExecutorProps: rejectedHandlerType: CallerRunsPolicy queueType: VariableLinkedBlockingQueue waitForTasksToCompleteOnShutdown: true awaitTerminationSeconds: 3 taskWrapperNames: ["swTrace", "ttl", "mdc"] queueTimeout: 300 runTimeout: 300 notifyItems: # 报警项,不配置自动会按默认值配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警) - type: change # 线程池核心参数变更通知 silencePeriod: 120 # 通知静默时间(单位:s),默认值1,0表示不静默 - type: capacity # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类 threshold: 80 # 报警阈值,意思是队列使用率达到70%告警;默认值=70 count: 2 # 在一个统计周期内,如果触发阈值的数量达到 count,则触发报警;默认值=1 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默,默认值=120 - type: liveness # 线程池活性 threshold: 80 # 报警阈值,意思是活性达到70%告警;默认值=70 count: 3 # 在一个统计周期内,如果触发阈值的数量达到 count,则触发报警;默认值=1 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默;默认值=120 - type: reject # 触发任务拒绝告警 count: 1 # 在一个统计周期内,如果触发拒绝策略次数达到 count,则触发报警;默认值=1 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默;默认值=120 - type: run_timeout # 任务执行超时告警 count: 20 # 在一个统计周期内,如果执行超时次数达到 count,则触发报警;默认值=10 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 30 # 报警静默时间(单位:s),0表示不静默;默认值=120 - type: queue_timeout # 任务排队超时告警 count: 5 # 在一个统计周期内,如果排队超时次数达到 count,则触发报警;默认值=10 period: 30 # 报警统计周期(单位:s),默认值=120 silencePeriod: 0 # 报警静默时间(单位:s),0表示不静默;默认值=120 ``` ## Feature - 新增 jmh benchmark 基准测试模块。 ```xml https://github.com/dromara/dynamic-tp/pull/545 ``` ## Refactor - 移除 cglib,动态代理采用 bytebuddy 重构。 ```xml https://github.com/dromara/dynamic-tp/pull/538 ``` - 重构告警规则,减少无用告警,告警更可控。 ```xml https://github.com/dromara/dynamic-tp/pull/553 ``` - 实时监控指标暴露的端点名称从 dynamic-tp 修改为 dynamictp,消除 springboot 的 warn 警告 ```xml https://github.com/dromara/dynamic-tp/pull/542 ``` ## Bugfix - 修复 springboot devtool restart 后 DtpMonitor 中线程池被关闭报错拒绝任务问题。 ```xml https://github.com/dromara/dynamic-tp/pull/529 ``` - 修复如果未引入 jackson-datatype-jsr310 会导致 jackson 异常并且无提示问题。 ```xml https://github.com/dromara/dynamic-tp/pull/534 ``` - 优化潜在的 NPE 异常。 ```xml https://github.com/dromara/dynamic-tp/pull/537 ``` ## Dependency - sofa-rpc 升级,5.9.1 -> 5.12.0 - apache-dubbo 升级,3.0.7 -> 3.0.14 - apollo 升级,1.5.0 -> 2.0.0 - skywalking 升级,8.11.0 -> 9.1.0 - tars 升级,1.7.2 -> 1.7.3
821ae43
2025-04-23 18:20
下载
查看发行版
v1.2.0
v1.2.0 是一个大版本,主要功能是对 Spring 做了解耦,Spring 相关特性以独立 Module 的形式提供,其他非 Spring 框架集成 DynamicTp 时通过引入核心模块即可。 ## Feature - 核心模块中移除对 Spring 的依赖,方便在其他非 Spring 项目中使用。 ```xml https://github.com/dromara/dynamic-tp/issues/527 ``` ## Bugfix - 兼容当 Dubbo 版本在 3.0.9 到 3.1.8 之间时,需要替换的执行器命名为 INTERNAL_SERVICE_EXECUTOR,而不是 ExecutorService.class.getName()。 ```xml https://github.com/dromara/dynamic-tp/pull/495 ``` - 修复 Redis 限流器在 Redis Cluster 模式下报错问题。 ```xml https://github.com/dromara/dynamic-tp/pull/502 ``` - 修复执行 scheduledFuture cancel 报错问题。 ```xml https://github.com/dromara/dynamic-tp/pull/516 ``` - 修复 adapter-grpc 模块,grpc client channel executor 被关闭,调用报线程池关闭的错误。 ```xml https://github.com/dromara/dynamic-tp/pull/520 ``` - 兼容高版本 okhttp3 Dispatcher 中线程池字段为 executorServiceOrNull 的情况。 ```xml https://github.com/dromara/dynamic-tp/pull/525 ``` ## Optimize - 优化线程池配置文件提示功能。 ```xml https://github.com/dromara/dynamic-tp/pull/498 ``` - etcd kvClient get 添加超时时间控制。 ```xml https://github.com/dromara/dynamic-tp/pull/518 ``` - zookeeper-starter 客户端初始化支持 zk 认证。 ```xml https://gitee.com/dromara/dynamic-tp/pulls/61 ``` - 部分代码设计优化重构
09a4593
2025-02-16 22:25
下载
查看发行版
v1.1.9.1
## Bugfix - 修复定时任务只能运行 corePoolSize 次数的问题 #485 - 修复 ScheduledDtpExecutor 增强 execute方法,导致功能 map 清理不掉,有内存溢出风险 #493 - 修复 AgentAware 在处理有内部属性引用自身这类任务时的栈溢出问题。 ```xml https://gitee.com/dromara/dynamic-tp/issues/IAX904 ``` ## Optimize - 告警 SPI、监控 SPI 内部使用时忽略大小写
7ead9a3
2024-10-24 23:54
下载
查看发行版
v1.1.9
## Feature - 新增 AgentAware,解决在有其他 agent 增强 Runnable 情况下尝试去拿 DtpRunnable,进行 tps、tpxx、运行超时等统计功能,1.1.7 及之前版本为了防止内存泄露会关闭这些功能。 ```xml https://gitee.com/dromara/dynamic-tp/issues/IAPNE8 ``` ```xml <dependency> <groupId>org.dromara.dynamictp</groupId> <artifactId>dynamic-tp-extension-agent</artifactId> <version>1.1.9</version> </dependency> ``` - 新增全局配置功能,减少配置量,项目中可能会定义多个线程池,除了一些核心参数外,其他配置可能都是相同的,新增 globalExecutorProps 配置项,如果线程池某一配置项没配置,则从全局配置中取。 ```xml https://github.com/dromara/dynamic-tp/issues/443 ``` ```yml spring: dynamic: tp: globalExecutorProps: queueType: VariableLinkedBlockingQueue rejectedHandlerType: CallerRunsPolicy allowCoreThreadTimeOut: false awaitTerminationSeconds: 5 taskWrapperNames: ["ttl", "mdc"] executors: - threadPoolName: dtpExecutor1 executorType: eager corePoolSize: 10 maximumPoolSize: 20 queueCapacity: 2000 threadNamePrefix: test - threadPoolName: dtpExecutor2 corePoolSize: 20 maximumPoolSize: 40 queueCapacity: 1000 threadNamePrefix: test2 ``` - 线程池配置新增 autoCreate 字段,标识是否自动生成 DtpExecutor 实例,默认为 true;若想使用 juc 原生线程池或 spring 线程池可置为 false,需在代码中手动创建线程池。1.1.9 之前版本中,配置在 executors 下的所有线程池在服务启动时会自动生成 DtpExecutor 注册到 spring 容器中,如果项目中大量使用了 Spring ThreadPoolTaskExecutor 接线程池对象,若配置的线程池名称相同,此时会报类型转换异常。 ```xml https://github.com/dromara/dynamic-tp/issues/472 ``` ```yml spring: dynamic: tp: globalExecutorProps: taskWrapperNames: ["ttl", "mdc"] executors: - threadPoolName: springTaskExecutor autoCreate: false corePoolSize: 10 maximumPoolSize: 20 queueCapacity: 2000 threadNamePrefix: test - threadPoolName: dtpExecutor2 corePoolSize: 20 maximumPoolSize: 40 queueCapacity: 1000 threadNamePrefix: test2 ``` - 新增规则引擎框架 Liteflow 线程池适配模块 ``` https://github.com/dromara/dynamic-tp/issues/474 ``` 引入以下依赖即可 ```xml <dependency> <groupId>org.dromara.dynamictp</groupId> <artifactId>dynamic-tp-spring-boot-starter-adapter-liteflow</artifactId> <version>1.1.9</version> </dependency> ``` ```yml spring: dynamic: tp: liteflowTp: - threadPoolName: liteflowTp#LiteFlowDefaultWhenExecutorBuilder corePoolSize: 10 maximumPoolSize: 20 keepAliveTime: 60 ``` - ScheduledDtpExecutor 支持 TaskWrapper 任务包装。 ```xml https://github.com/dromara/dynamic-tp/issues/431 ``` ```yml spring: dynamic: tp: executors: - threadPoolName: dtpExecutor1 executorType: scheduled corePoolSize: 10 threadNamePrefix: test taskWrapperNames: ["ttl", "mdc"] ``` ## Bugfix - 修复 Spring ThreadPoolTaskExecutor 被框架管理后,ThreadPoolTaskExecutor 中定义的线程池装饰器失效问题。 ```xml https://gitee.com/dromara/dynamic-tp/issues/I9D31H ``` - 修复 RocketMQ 线程池适配模块,在低版本时 getAsyncSenderExecutor 报 NoSuchMethodError 错误问题。 ```xml https://github.com/dromara/dynamic-tp/issues/417 ``` - 修复 TaskEnhanceAware 在多 Wrapper 包装后 taskName 丢失问题。 ```xml https://github.com/dromara/dynamic-tp/issues/420 ``` - 修复 JMX 报错 InstanceAlreadyExistsException 问题。 ```xml https://github.com/dromara/dynamic-tp/issues/437 ``` - 修复飞书报警填写了 username(非 openid 的情况), 发出的消息接受人为空问题。 ```xml https://github.com/dromara/dynamic-tp/issues/428 ``` - 修复钉钉告警 @所有人 不生效问题。 ```xml https://github.com/dromara/dynamic-tp/issues/439 ``` - 修复动态更新 taskWrappers 后导致 spring 线程池任务装饰器丢失问题。 ```shell https://github.com/dromara/dynamic-tp/issues/481 ``` - 修复 dubbo adapter missing afterInitialize step。 ## Optimize - 三方中间件线程池支持运行过程异常打印 - Undertow 线程池支持任务包装器 - juc 线程池、spring 线程池支持更多参数动态调整 - 部分代码设计优化重构
cb3e477
2024-09-27 11:14
下载
查看发行版
v1.1.7
## Feature - 线程池配置增加 tryInterrupt 字段,控制任务执行超时后是否需要中断当前线程,@yanhom - 新增 PriorityDtpExecutor,适用于可以指定任务的处理优先级场景,@KamToHung - 指标数据采集器新增 jmx 方式,@KamToHung - 线程池配置新增 env 字段,控制告警信息里的环境取值,@少鹏 - 告警平台配置增加 webhook 字段,降低配置复杂度,@kyao,@KamToHung ## Bugfix - 修复上下文刷新后,DtpMonitor 重复创建调度任务的问题,@trevzhang - 修复 OpenTelemetryWrapper 没有将 traceId 传入 DynamicTp 框架的问题,@少鹏 - 修复告警时,tid 错乱问题,@yanhom - 修复 dubbo 2.7.5 以下版本动态线程池不生效的问题,@piemon-nyah - 修复异常拒绝任务时跳过 afterReject 执行的问题,@SimpleIto - 修复飞书告警,机器人签名不为空时报错的问题,@guozi ## Optimize - 优化 spring-configuration-metadata,配置提示完整化,@KamToHung - 支持 apache dubbo 最新版本,@KamToHung - 完善 example - 部分代码优化重构 ## Refactor - 将通知告警基础包从 core 模块移动到 common 模块 - 将 plugin 插件包从 core 模块移动到 common 模块
56cfa02
2024-03-31 16:37
下载
查看发行版
v1.1.6
d4ffb12
2023-12-19 08:16
下载
v1.1.6.1
d4ffb12
2023-12-19 08:16
下载
查看发行版
v1.1.5
15796de
2023-10-30 14:38
下载
查看发行版
v1.1.4
e5b2043
2023-09-24 23:51
下载
查看发行版
v1.1.3
b49321d
2023-04-27 18:43
下载
查看发行版
v1.1.2
ca733a9
2023-03-31 11:13
下载
查看发行版
v1.1.0
a752379
2023-02-18 20:17
下载
查看发行版
1.0.9
2fee25c
2022-12-16 21:59
下载
查看发行版
v1.0.9
2fee25c
2022-12-16 21:59
下载
1.0.8
839e13d
2022-08-26 19:57
下载
查看发行版
v1.0.8
956f89e
2022-08-25 19:31
下载
v1.0.7
c73016e
2022-06-25 16:35
下载
查看发行版
v1.0.5
6900a43
2022-04-23 22:41
下载
查看发行版
v1.0.4
a1c61a4
2022-04-02 15:13
下载
查看发行版
v1.0.3
b61dd15
2022-03-20 22:53
下载
查看发行版
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
Java
1
https://gitee.com/dromara/dynamic-tp.git
git@gitee.com:dromara/dynamic-tp.git
dromara
dynamic-tp
dynamic-tp
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册