动态线程池框架 DynamicTp v1.0.7版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?

DynamicTp 简介

DynamicTp 是一个基于配置中心实现的轻量级动态线程池管理工具,主要功能可以总结为 动态调参、通知报警、运行监控、三方包线程池管理等几大类。

动态线程池框架 DynamicTp v1.0.7版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?

经过几个版本迭代,目前最新版本v1.0.7具有以下特性

特性

  • 代码零侵入:所有配置都放在配置中心,对业务代码零侵入
  • 轻量简单:基于 springboot 实现,引入 starter,接入只需简单4步就可完成,顺利3分钟搞定
  • 高可扩展:框架核心功能都提供 SPI 接口供用户自定义个性化实现(配置中心、配置文件解析、通知告警、监控数据采集、任务包装等等)
  • 线上大规模应用:参考美团线程池实践,美团内部已经有该理论成熟的应用经验
  • 多平台通知报警:提供多种报警维度(配置变更通知、活性报警、容量阈值报警、拒绝触发报警、任务执行或等待超时报警),已支持企业微信、钉钉、飞书报警,同时提供 SPI 接口可自定义扩展实现
  • 监控:定时采集线程池指标数据,支持通过 MicroMeter、JsonLog 日志输出、Endpoint 三种方式,可通过 SPI 接口自定义扩展实现
  • 任务增强:提供任务包装功能,实现TaskWrapper接口即可,如 TtlTaskWrapper 可以支持线程池上下文信息传递,以及给任务设置标识id,方便问题追踪
  • 兼容性:JUC 普通线程池也可以被框架监控,@Bean 定义时加 @DynamicTp 注解即可
  • 可靠性:框架提供的线程池实现 Spring 生命周期方法,可以在 Spring 容器关闭前尽可能多的处理队列中的任务
  • 多模式:参考Tomcat线程池提供了 IO 密集型场景使用的 EagerDtpExecutor 线程池
  • 支持多配置中心:基于主流配置中心实现线程池参数动态调整,实时生效,已支持 Nacos、Apollo、Zookeeper、Consul,同时也提供 SPI 接口可自定义扩展实现
  • 中间件线程池管理:集成管理常用第三方组件的线程池,已集成Tomcat、Jetty、Undertow、Dubbo、RocketMq、Hystrix等组件的线程池管理(调参、监控报警)

官网上线

随着v1.0.7的发布我们上线了DynamicTp官网:https://dynamictp.cn

介绍文档、使用说明等都可以查看官网了解更多,以后新特性也会优先发布到官网上

欢迎大家体验 👏🏻

动态线程池框架 DynamicTp v1.0.7版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?

v1.0.7 发布记录

距离v1.0.5发布已经有差不多2个月时间,这个版本框架源码调整还是比较大的,重构了好一些功能,主要是围绕第三方中间件线程池集成来改动的,是向前兼容的,同时修复了三个小bug。

如果你有下述痛点,快快升级体验吧。

1)如果你在使用 Dubbo,那么你大概率遇到过 Dubbo 线程池耗尽的情况,是不是很烦恼呢?尝试使用下 DynamicTp 的 Dubbo 线程池管理功能,结合告警、实时监控、动态调参等功能尽可能降低 Dubbo 线程池耗尽,请求拒绝的风险。

2)mq 应该是很多互联网系统都会使用到的中间件,使用 mq 经常会遇到的其中一个问题就是消息积压问题,具体啥原因导致积压需要具体问题具体分析,就RocketMq来说,消费端是使用线程池进行处理消息的,所以说线程池的设置也会直接或者间接影响到消费速度,需要对此进行监控、告警、以及动态调参,尽可能降低因线程池设置而导致的积压风险。

注意:springboot 内置的三大 webserver 集成包默认会引入,不需要额外引入,其他三方组件的包需要自己引入,具体查看官网

Features

  • 报警渠道接入飞书
  • 支持 Apache Dubbo & Alibab Dubbo 服务端提供端线程池管理
  • 支持 RocketMq 消费端线程池管理
  • 支持 Hystrix 线程池管理
  • 支持 SpringBoot 内置三大WebServer(Tomcat、Jetty、Undertow)线程池管理
  • 增加线程池别名配置,提升告警信息可读易懂性
  • 提供任务包装类NamedRunable,提交任务时设置标识名称,方便问题追踪
  • 告警项自定义配置,不配置的项用默认值

BugFix

  • 修复并发导致通知报警信息发送多条的问题
  • 修复通知渠道配置修改不能动态更新问题
  • 修复钉钉手机端报警信息高亮失效问题

Refactor

  • 重构部分通知告警模块实现,支持三方中间件通知告警
  • 重构调整 adapter、starter 模块代码组织结构

项目地址

目前累计 1.3k star,感谢你的star,欢迎pr,业务之余一起给开源贡献一份力量

官网https://dynamictp.cn

gitee地址https://gitee.com/dromara/dynamic-tp

github地址https://github.com/dromara/dynamic-tp

加入社群

使用过程中有任何问题,或者对项目有什么想法或者建议,可以加入社群,跟群友一起交流讨论。

微信群已满200人,可以加我个人微信拉群(备注:dynamic-tp)。

动态线程池框架 DynamicTp v1.0.7版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?

Original: https://www.cnblogs.com/yanhom/p/16370224.html
Author: yanhom1314
Title: 动态线程池框架 DynamicTp v1.0.7版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610363/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 多线程与高并发(五)—— 源码解析 ReentrantLock

    一、前言 ReentrantLock 是基于 AQS 实现的同步框架,关于 AQS 的源码在 这篇文章 已经讲解过,ReentrantLock 的主要实现都依赖AQS,因此在阅读本…

    Java 2023年6月9日
    080
  • java线程池

    Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来许多好处。 什么是线程池? Java中的线程…

    Java 2023年6月13日
    074
  • Virtualbox中不能为虚拟机打开一个新任务的原因及解决方法

    我最开始的时候还以为是因为我的虚拟机路径是中文导致的,后来才发现原因: 4.3.12 之后的版本增加了安全检查机制(以前会被病毒利用),如果有程序将DLL注入Vbox的进程就会报错…

    Java 2023年5月30日
    0110
  • 在Java中入门,读取和创建Excel,Apache POI的使用

    POI介绍 Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Exc…

    Java 2023年5月29日
    076
  • Java Iterator(迭代器)小笔记

    Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList和 HashSet 等集合。Iterator 是 Java 迭代器最简单…

    Java 2023年5月29日
    097
  • zookeeper-3.4.5修改存储1M大小限制

    zookeeper单个path下存储的数据有默认大小限制。默认是1M。如果将大小超过1M的数据存储,将报异常,存储失败。 解决办法: 1、在zkServer.sh中加入:-Djut…

    Java 2023年6月6日
    085
  • gitee上传代码到仓库步骤(最简洁图文+命令说明)

    gitee上传代码到仓库步骤(最简洁图文+命令说明) 1、初始化项目 2、将当前目录下所有需要上传的文件代码等资源添加到缓存区 3、 提交缓存区里面的主要内容到本地仓库 4、添加一…

    Java 2023年6月5日
    086
  • HTTP协议学习之Request学习

    在开始前,我们首先对HTTP协议做个简单的了解 HTTP协议(Hyper Text Transfer Protocol) 超文本传输协议 名词非常的高大上,如果学过计算机网络这门课…

    Java 2023年6月5日
    093
  • Spring(五):IoC创建对象的方式

    一、bean被创建的时间 考虑一个问题,我们都知道spring通过xml的配置创建bean,那么bean是什么时间被创建的呢?是在我们getBean()的时候创建的吗? 我们来做一…

    Java 2023年6月15日
    0101
  • 安装java jdk和eclipse和andorid环境

    目的是构建一个以eclipse为主体,可以创建java的windows窗口程序,android程序的开发环境。 1、下载jdk-18,目前最新版本。https://www.orac…

    Java 2023年5月29日
    068
  • 面向对象-中级篇

    public class Test { public static void main(String[] args) { Person[] person = new Person[…

    Java 2023年6月16日
    079
  • JVM学习笔记之垃圾收集器【五】

    垃圾收集器 HotSpot 包含的垃圾收集器 一、串行收集器 1.1、Serial 收集器 在 JDk1.3 之前是新生代收集的唯一选择 单线程,只会使用一个 CPU 去完成 垃圾…

    Java 2023年6月5日
    090
  • java数据类型转换问题

    我们知道java中的各个数据类型的取值范围不同,可以理解成容量大小,而针对容量大小可以对他们进行一个由低到高的排序,也就是优先级。 优先级 低——&#821…

    Java 2023年6月13日
    094
  • 部署jar包windows服务工具

    背景 某个周末一个线上项目因为服务器自动重启导致了系统挂了,我们是通过jenkins部署的jar包所以需要手动重启项目,解决问题后准备调换部署方式让项目随系统自动启动,试用tomc…

    Java 2023年6月15日
    094
  • 设计模式二:webMVC

    model:观察者模式,对view和controller一无所知,即完全decouple。仅知道有observer需要它去通知 view:组合模式实现的jsp等用户界面。当发生页面…

    Java 2023年6月9日
    063
  • CSS实现超过一定的宽度添加省略

    CSS实现超过一定的宽度添加省略 .detail-item-line { width: 100%; word-break: keep-all; /* 不&am…

    Java 2023年6月8日
    0137
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球