dynamic-tp v1.2.1 已经发布,轻量级动态线程池
dynamic-tp v1.2.1 已经发布,轻量级动态线程池
此版本更新内容包括:
升级注意事项
- DtpEndpoint 端点名称修改
实时指标监控端点名称从 dynamic-tp
修改为 dynamictp
,消除 springboot 的非法字符 warn 警告。
- 告警规则重构
v1.2.1 之前版本里告警规则比较简单,通过 threshold
和 interval
字段来控制。
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)内再产生的报警保持静默,且静默可以关闭。
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 基准测试模块。
https://github.com/dromara/dynamic-tp/pull/545
Refactor
- 移除 cglib,动态代理采用 bytebuddy 重构。
https://github.com/dromara/dynamic-tp/pull/538
- 重构告警规则,减少无用告警,告警更可控。
https://github.com/dromara/dynamic-tp/pull/553
- 实时监控指标暴露的端点名称从 dynamic-tp 修改为 dynamictp,消除 springboot 的 warn 警告
https://github.com/dromara/dynamic-tp/pull/542
Bugfix
- 修复 springboot devtool restart 后 DtpMonitor 中线程池被关闭报错拒绝任务问题。
https://github.com/dromara/dynamic-tp/pull/529
- 修复如果未引入 jackson-datatype-jsr310 会导致 jackson 异常并且无提示问题。
https://github.com/dromara/dynamic-tp/pull/534
- 优化潜在的 NPE 异常。
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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JetLinks 2.3 发布,开源物联网平台
JetLinks 开源物联网平台 JetLinks 基于 Java8、Spring Boot 2.x、WebFlux、Netty、Vert.x、Reactor 等开发,是一个开源的企业级物联网基础开发平台,实现了物联网相关以及相关业务开发的众多基础功能,能帮助你快速建立物联网相关业务系统。 在线完整功能演示地址: https://demo.jetlinks.cn 用户名:test 密码: test123456 测试用户未开放全部权限,建议本地运行社区版体验或者联系商务试用企业版。 核心特性 开放源代码 全部源代码开放,可自由拓展功能,不再受制于人。前后端分离,接口全开放。 统一设备接入,海量设备管理 TCP/UDP/MQTT/HTTP、TLS/DTLS、不同厂商、不同设备、不同报文、统一接入,统一管理。 规则引擎 灵活的规则模型配置,支持多种规则模型以及自定义规则模型。设备告警,场景联动,均由统一的规则引擎管理。 超轻量级基于 SQL 的实时处理引擎 , 让数据处理更简单. 多种数据存储策略 支持灵活的设备数据存储策略,可将不同类型的设备数据存储到不同的地方。 技术栈 Spring B...
- 下一篇
JimuBI 积木报表 v1.9.5 发布,大屏和仪表盘,免费数据可视化
项目介绍 JimuBI (积木报表 BI) 是一款免费的数据可视化产品,含大屏和仪表盘、门户、移动图表,像搭建积木一样完全在线设计! 大屏采用类 word 风格,可以随意拖动组件,想怎么设计怎么设计,可以像百度和阿里一样,设计出炫酷大屏! JimuBI 产品的牛叉之处,同时支持大屏、仪表盘、门户 (支持交互)、移动。 秉承 "简单、易用、专业" 的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本。 当前版本:v1.9.5 | 2025-04-28 集成依赖 <!-- 积木BI大屏依赖 --> <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimubi-spring-boot-starter</artifactId> <version>1.9.5</version> </dependency> 升级日志 又是一个大版本优化,提供了一系列新功能并优化组件的系列...
相关文章
文章评论
共有0条评论来说两句吧...