其他
3K+ stars 国产轻量级动态线程池开源项目
3、线程池相对开发人员来说是个黑盒,运行情况不能及时感知到,直到出现问题
小编今天为大家带来一款国产开源优秀项目:dynamic-tp,基于配置中心的轻量级动态可监控线程池。DynamicTp 能帮助你彻底解决以上痛点。
现在大多数的互联网项目都会采用微服务化部署,有一套自己的服务治理体系,微服务组件中的分布式配置中心 扮演的就是动态修改配置,实时生效的角色。
那么我们是否可以结合配置中心来做运行时线程池参数的动态调整呢?
🎨️ 最新版本支持的功能
代码零侵入:所有配置均放在配置中心,对业务代码零侵入 通知告警:提供多种通知告警维度,支持企微、钉钉、飞书等渠道推送方式 运行监控:定时采集线程池指标数据(20 多种指标,包含线程池维度、队列维度、任务维度、tps、tp99等) 任务增强:提供任务包装功能,支持线程池上下文信息传递 多配置中心支持:支持 Nacos、Apollo、Zookeeper、Consul、Etcd等多种主流配置中心 中间件线程池管理:集成管理常用第三方组件的线程池,已集成 Tomcat、Jetty、Undertow、Dubbo、RocketMq、Hystrix、Grpc、Motan、Okhttp3、Brpc、Tars、SofaRpc、RabbitMq 等组件的线程池管理 轻量简单:使用极其简单,3 分钟搞定,相当丝滑 多模式:提供了增强线程池 DtpExecutor,IO 密集型场景使用的线程池 EagerDtpExecutor,调度线程池 ScheduledDtpExecutor,有序线程池 OrderedDtpExecutor,可以根据业务场景选择合适的线程池 兼容性:JUC 普通线程池和 Spring 中的 ThreadPoolTaskExecutor 也可以被框架管理,@Bean 定义时加 @DynamicTp 注解即可 可靠性:依靠 Spring 生命周期管理,可以做到优雅关闭线程池,在 Spring 容器关闭前尽可能多的处理队列中的任务 高可扩展:框架核心功能都提供 SPI 接口供用户自定义个性化实现(配置中心、配置文件解析、通知告警、监控数据采集、任务包装等等)
🧰 技术架构图
配置变更监听模块 线程池管理模块 监控模块 通知告警模块 三方组件线程池管理模块
🍄 接入步骤
依赖环境:
JDK 8+
Spring 4.x 及以上
SpringBoot 2.x、3.x 版本
<dependency>
<groupId>org.dromara.dynamictp</groupId>
<artifactId>dynamic-tp-spring-boot-starter-apollo</artifactId>
<version>[最新版本]</version>
</dependency>
配置文件示例参考:
5、启动服务,看到有如下日志输出,即表示接入成功!
| __ \ (_) |__ __|
| | | |_ _ _ __ __ _ _ __ ___ _ ___| |_ __
| | | | | | | '_ \ / _` | '_ ` _ | |/ __| | '_ \
| |__| | |_| | | | | (_| | | | | | | | (__| | |_) |
|_____/ __, |_| |_|__,_|_| |_| |_|_|___|_| .__/
__/ | | |
|___/ |_|
:: Dynamic Thread Pool ::
DynamicTp register executor: TpMainFields(threadPoolName=dtpExecutor1, corePoolSize=2, maxPoolSize=10, keepAliveTime=50, queueType=TaskQueue, queueCapacity=200, rejectType=CallerRunsPolicy, allowCoreThreadTimeOut=false), source: beanPostProcessor
DtpRegistry has been initialized, remote executors: [dtpExecutor1], local executors: [ioIntensiveExecutor, commonExecutor, dtpExecutor2]
🔥 快速体验
Logging:线程池指标数据会以 Json 格式输出到指定的日志文件里 Internal_logging:线程池指标数据会以 Json 格式输出到项目日志文件里 Micrometer:采用监控门面,通过引入相关 Micrometer 依赖采集到相应的存储平台里(如 Prometheus,InfluxDb...) Endpoint:暴露 Endpoint 端点,可以通过 http 方式实时获取指标数据
2、通知报警
还有其他更多的功能,宝子们参考官方文档及教程,这里给出项目的地址及开发手册,有需要的宝子不要错过,项目非常优秀,狠实用!
附项目的链接:
官网:
https://dynamictp.cnGitHub开源地址:
https://github.com/dromara/dynamic-tpGitee开源地址:
https://gitee.com/dromara/dynamic-tp开发手册:
https://dynamictp.cn/guide往期推荐: