历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8
关于 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,业务之余一起给开源贡献一份力量
gitee地址:https://gitee.com/dromara/dynamic-tp
github地址:https://github.com/dromara/dynamic-tp
看到这儿,方便的话给项目一个star,你的支持是我们前进的动力!
历时2月,动态线程池 DynamicTp 发布里程碑版本 V1.0.8的更多相关文章
- 动态线程池框架 DynamicTp v1.0.6版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?
DynamicTp 简介 DynamicTp 是一个基于配置中心实现的轻量级动态线程池管理工具,主要功能可以总结为 动态调参.通知报警.运行监控.三方包线程池管理等几大类. 经过几个版本迭代,目前最新 ...
- 动态线程池(DynamicTp)之动态调整Tomcat、Jetty、Undertow线程池参数篇
大家好,这篇文章我们来介绍下动态线程池框架(DynamicTp)的adapter模块,上篇文章也大概介绍过了,该模块主要是用来适配一些第三方组件的线程池管理,让第三方组件内置的线程池也能享受到动态参数 ...
- 开源动态可监控线程池DynamicTp介绍
前言 使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 凭经验设置参数值, ...
- 美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇
大家好,这篇文章我们来聊下动态线程池开源项目(DynamicTp)的通知告警模块.目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启.告警阈值.告警间隔时间.平台等,具体代码请看core ...
- 一时技痒,撸了个动态线程池,源码放Github了
阐述背景 线程池在日常工作中用的还挺多,当需要异步,批量处理一些任务的时候我们会定义一个线程池来处理. 在使用线程池的过程中有一些问题,下面简单介绍下之前遇到的一些问题. 场景一:实现一些批量处理数据 ...
- Sentinel 发布里程碑版本,添加集群流控功能
自去年10月底发布GA版本后,Sentinel在近期发布了另一个里程碑版本v1.4(最新的版本号是v1.4.1),加入了开发者关注的集群流控功能. 集群流控简介 为什么要使用集群流控呢?假设我们希望给 ...
- spring动态线程池(实质还是用了java的线程池)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 开源组件编排引擎LiteFlow发布里程碑版本2.5.0
介绍 LiteFlow作为一款轻量级组件编排框架,自开源来,获得了挺多人的关注.社区群也扩展到了接近200人. 早期版本因为疏忽打理,有一些BUG,迭代也不及时.距离上一个稳定版本2.3.3,已经有超 ...
- java动态线程池LinkedBlockingQueue和SynchronousQueue比较
import java.util.concurrent.Callable; public class MyCallable implements Callable<String> { pr ...
随机推荐
- django框架9
内容概要 用户名动态校验 删除二次确认 sweetalert前端插件 django自带的序列化组件 批量数据操作 分页器推导流程 自定义分页器封装代码 自定义分页器使用方法 校验性组件之forms组件 ...
- Linux切换中英文输入
使用xshell登录Linux服务器后,输入的命令正确但是提示命令不存在,这是什么鬼. 通过移动光标可以发现两种字体的宽度不一样 解决方法 shift + 空格 进行切换
- 一款超级好用的3Dmax模型插件 支持模型多格式批量转换
对于模型设计师来说模型格式转换是最常见的事,但是每一款建模软件所支持的格式各有不同,模型互导操作太麻烦 为了解决这个难题,老子云平台研发了一款基于3dmax软件的模型格式转换插件,支持多种模型格式想换 ...
- wcf .net webService和 .net webApi的联系与差异
首先,我们需要清楚它们的概念,然后才能走好下一步. wcf是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合,它是一种重量级消息交互框架,广 ...
- KTL 一个支持C++14编辑公式的K线技术工具平台 - 第七版,体验GPGPU。
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- Consider defining a bean of type 'redis.clients.jedis.JedisPool' in your configuration.
报错信息 原因是没有Jedispool没有注入 import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml ...
- NC23046 华华教月月做数学
NC23046 华华教月月做数学 题目 题目描述 找到了心仪的小姐姐月月后,华华很高兴的和她聊着天.然而月月的作业很多,不能继续陪华华聊天了.华华为了尽快和月月继续聊天,就提出帮她做一部分作业. 月月 ...
- PTA(BasicLevel)-1023 组个最小数
一. 问题定义 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位). 例如:给定两个 0,两个 1,三个 5,一个 8,我 ...
- Deep Learning-深度学习(一)
深度学习入门 1.人工智能.机器学习.深度学习 1.1 人工智能(AI) 一个比较宽泛的概念.即用来模拟人的智能的理论,并对这个模拟出来的智能进行延伸和开拓.通俗来讲就是要达到用机器模拟人类的聪慧来处 ...
- windows10 使用elasticsearch和kibana
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-windows-x86_64.zip https:// ...