关于java:历时2月动态线程池DynamicTp发布里程碑版本V108

3次阅读

共计 2168 个字符,预计需要花费 6 分钟才能阅读完成。

对于 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,你的反对是咱们后退的能源!

应用过程中有任何问题,或者对我的项目有什么想法或者倡议,能够退出社群,跟群友一起交换探讨。

微信群已满 200 人,能够加我集体微信拉群(备注:dynamic-tp)。

正文完
 0