历时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 ...
随机推荐
- ELK 是什么?
E指的是ElasticSearch Elasticsearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch ...
- Java创建数据库新建表及初始化表
方法一 package com.crt.openapi; import java.sql.DriverManager;import java.sql.ResultSet;import java.io. ...
- WPF开发随笔收录-自定义图标控件
一.前言 1.在以前自学的过程中,软件需要使用到图标的时候,总是第一个想法是下载一个图片来充当图标使用,但实际得出来的效果会出现模糊的现象.后来网上学习了字体图标库的用法,可以在阿里云矢量图网站那里将 ...
- 【python基础】第02回 计算机基础2
上节内容回顾 1.绝对路径与相对路径 1.路径的概念 用来标识资源的位置 2.绝对路径 类似于全球GPS定位(给到任何人都可以顺利的找到相应的资源) eg: D:\aaa\a.txt 3.相对路径 需 ...
- arcgis创建postgre企业级数据库
什么是企业级地理数据库? 企业级地理数据库(ArcSD Enterprise,sde)是和 arcGIS 套件集成程度最高的地理数据库:创建时需要用到安装 arcGIS Server 时的 [ecp ...
- docker 部署 minio
1.下载镜像 docker pull minio/minio 2.启动 docker run -p 9000:9000 --name minio \ -d --restart=always \ -e ...
- 深入浅出理解SVM支持向量机算法
支持向量机是Vapnik等人于1995年首先提出的,它是基于VC维理论和结构风险最小化原则的学习机器.它在解决小样本.非线性和高维模式识别问题中表现出许多特有的优势,并在一定程度上克服了" ...
- 2m高分辨率土地利用分类数据
数据下载链接:百度云下载链接 土地利用数据是在根据影像光谱特征,结合野外实测资料,同时参照有关地理图件,对地物的几何形状,颜色特征.纹理特征和空间分布情况进行分析,建立统一解译标志的基础之上,依据多源 ...
- Iterator接口介绍和迭代器的代码实现
定义:Iterator接口是Java集合框架中的一员. 作用:Collection接口与Map接口主要用于存储元素. 常用方法: boolen hasNext(); //判断游标右边是否还有元 ...
- C++记录一
题目一: [描述] 比较两个整数之间的大于.小于.等于.不等于关系. [输入] 输入在一行中给出2个整数a和b. [输出] 分行输出整数a和b之间的大于.小于.等于.不等于关系. [输入示例] 5 3 ...