DynamicTp 简介

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

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

特性

  • 代码零侵入:所有配置都放在配置中心,对业务代码零侵入

  • 轻量简单:基于 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.6的发布我们上线了DynamicTp官网:https://dynamictp.cn

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

欢迎大家体验

v1.0.6 发布记录

距离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.6版本发布。还在为Dubbo线程池耗尽烦恼吗?还在为Mq消费积压烦恼吗?的更多相关文章

  1. 【VIP视频网站项目】VIP视频网站项目v1.0.3版本发布啦(程序一键安装+电影后台自动抓取+代码结构调整)

    在线体验地址:http://vip.52tech.tech/ GIthub源码:https://github.com/xiugangzhang/vip.github.io 项目预览 主页面 登录页面 ...

  2. 后台框架 FastAdmin V1.0.0.20200228 发布,为疫情防控作贡献

    后台框架 FastAdmin V1.0.0.20200228 发布,为疫情防控作贡献 https://www.oschina.net/news/113694/fastadmin-1-20200228- ...

  3. hasura graphql-engine v1.0.0-alpha26 版本新功能试用

      hasura graphql-engine v1.0.0-alpha26 已经发布了,有好多新的变动,测试使用docker 环境,同时pg 数据库使用了citus citus 是一个方便扩展的pg ...

  4. hasura graphql-engine v1.0.0-alpha26 版本新功能

    hasura 发布了graphql-engine v1.0.0-alpha26 版本,有一些破坏的变动,以及方便的新特性 破坏性变动 order_by 从 order_by: id_asc 为 ord ...

  5. QuantumTunnel:v1.0.0 正式版本发布

    经过一段时间运行,代码已经稳定是时候发布正式版本了! v1.0.0 正式版本发布 对核心能力的简要说明: 支持协议路由和端口路由:QuantumTunnel:端口路由 vs 协议路由 基于Netty实 ...

  6. Rookey.Frame v1.0 视频教程之三发布-框架核心思想介绍

    本期发布视频: (三)Rookey.Frame v1.0框架核心思想 介绍了Rookey.Frame v1.0框架搭建的核心思想,将框架核心思想理解清楚,对框架运行就会得心应手 官方视频教程: htt ...

  7. 关于Farseer.net轻量级ORM开源框架 V1.0 概念版本开发的消息

    V0.2版的开源距离今天(05年03月)已有近3年的时间.可以说这个版本已经有点落伍的感觉了,呵呵. V0.2版至今一直处于BUG的修复及一些细小功能的增加,所以版本号上一直没有变化. 其实在这1.2 ...

  8. 面向UI编程:ui.js 1.0 粗糙版本发布,分布式开发+容器化+组件化+配置化框架,从无到有的艰难创造

    时隔第一次被UI思路激励,到现在1.0的粗糙版本发布,掐指一算整整半年了.半年之间,有些细节不断推翻重做,再推翻再重做.时隔今日,终于能先出来个东西了,这个版本很粗糙,主体功能大概能实现了,但是还是有 ...

  9. AEAI EM费用管理系统V1.0.2版本开源发布

    本次开源发布是AEAI EM费用管理系统 V1.0.2版,该版本是此产品的首个版本,产品现已开源并上传至开源社区http://www.oschina.net/p/aeai-em. 产品说明: AEAI ...

随机推荐

  1. Django实现统一包装接口返回值数据格式

    前言 最近实在太忙了,开始了一个新的项目,为了快速形成产品,我选择了Django来实现后端,然后又拿起了之前我封装了项目脚手架「DjangoStarter」. 由于前段时间我写了不少.NetCore的 ...

  2. 服务器jupyter连接不上主机

    首先安装jupyter pip3 install jupyter -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 然后 ...

  3. Mybatis-plugins分页助手实现查询数据分页

    其他具体代码接上文->mybatis自定义处理器 1.导入坐标 <dependency> <groupId>com.github.pagehelper</group ...

  4. Java语言学习day05--7月2日

    今日内容介绍1.引用类型变量的创建及使用2.流程控制语句之选择语句 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于引用数据类型,我们先了解下 ...

  5. python基础练习题(题目 学习使用auto定义变量的用法)

    day28 --------------------------------------------------------------- 实例042:变量作用域 题目 学习使用auto定义变量的用法 ...

  6. 02. 树莓派初始配置——安装rz命令

    安装rz命令 如果你的ssh工具不带xftp文件上传功能,则需要安装使用ZMODEM协议的rz.sz命令. 1. 用root权限登录 2. 创建下载的目录地址(不创建也行,创建后方便以后文件管理) m ...

  7. XCTF练习题---MISC---就在其中

    XCTF练习题---MISC---就在其中 flag:flag{haPPy_Use_0penSsI} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是一个数据包格式,直接上Wireshark查 ...

  8. Kafka Kerberos 安全认证

    本主要介绍在 Kafka 中如何配置 Kerberos 认证,文中所使用到的软件版本:Java 1.8.0_261.Kafka_2.12-2.6.0.Kerberos 1.15.1. 1. Kerbe ...

  9. Linux-编译安装http-实验

    准备工作 1.关闭防火墙和SELinux 2.基础安装的系统,安装以下命令 yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre p ...

  10. ZABBIX新功能系列1-使用Webhook将告警主动推送至第三方系统

    Zabbix5以来的新版本与以前的版本除UI界面变化较大外,在很多功能上也有许多亮点,我这里计划安排1个系列来和大家交流一些新功能的使用,这是第一篇:使用Webhook将告警主动推送至第三方系统. 首 ...