开源利器推荐:美团动态线程池框架的接入分享及效果展示

news2024/11/25 1:07:26

前言

蛮早前有些过关于线程池的使用及参数的一些参考配置,有兴趣的可以翻看以前的博文,但终究无法解决线程池的动态监控和实时修改。

以前读过美团早期发布的动态线程池框架的思路相关文章,但想要独自实现不是一件容易的事。

去年,一款美团动态线程池的框架DynamicTp终于开源了,因此我有尝试使用一下,发现接入简单,侵入性也不强,支持的接入方式也多,总体还是很不错的。

我认为尤其适合中小企业SpringBoot应用接入,是一款线程池监控的利器。

介绍

DynamicTp官网:https://dynamictp.cn/

image

架构图

image

下面,我把一个非配置中心的接入案例分享给大家,配置中心接入方式大同小异。

正文

使用的是最新版本1.1.3

1、引入依赖

image

2、yml配置

核心配置就是图中红色说明的报警配置和线程池参数配置

image

这是紧接着上面的邮件告警配置,除了邮件方式还有其他很多方式,具体可参考官网,个人项目更推荐邮件方式,接入最简单。

image

3、测试

定义一个接口,使用Hutool提供的并发模拟工具类,这里先设置线程数200。

image

在service中注入一个线程池,默认名称regExecutor,和yml配置中定义的刚好对应上。

image

这个接口的逻辑很简单,就是模拟并发场景下使用线程池的效果。

image

4、效果

执行接口看下效果,发现一切正常,没有任何告警。

这是因为我们yml中配置的线程池参数可以承受测试时设置的200个线程数。

image

那么,我们把测试接口的线程数设置成500再看看。

image

执行后,可以看到,DynamicTp已经触发了告警,并且提示邮件发送成功。

image

我用的QQ邮箱,发现通知也收到了。

image

点开后,可以看到DynamicTp提供的详细的线程池监控告警通知。

image

可以看到,报警类型是reject,表示线程被拒绝,并且展示出了线程池参数的配置,以及拒绝策略,和拒绝的任务数量。

其中,拒绝任务数量达到了250个,计算一下我们配置的参数,核心8,最大50,队列容量200。

并发场景下,该配置实际最大容量确实是250,而我们测试传入的线程数是500,被拒绝250,刚好符合。

这样,我们根据被拒绝的任务数量,就可以动态调整参数,比如扩大队列容量,或者提高核心线程数的上限等等,甚至是调整拒绝策略为调用者线程继续执行。

这都要根据具体业务场景来区分,到底是IO密集型还是CPU密集型,关于这个可以参考我其他的博文。

总结

总之,DynamicTp的接入是很简单的,而且社区在不断完善,目前Gitee上能找到的关注度稍高的动态线程池框架其实就两个,只要学会使用一个就够用了,思想没有太多区别。

这个案例我并没有展示动态修改参数的效果,因为这种场景一般是分布式环境下接入比较适合,比如接入了nacos配置中心,那么DynamicTp也提供了对接方案。

想要文中的完整案例代码来测试效果的,可以关注红枫叶下载哈。


喜欢的xdm,可以【点个赞】,【收藏一下】以备不时之需,更可以【关注下我】,本人持续输出干货,分享工作中的一些实践经验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/941634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC之RESTful(含实际代码操作)

文章目录 前言一、RESTful简介二、RESTful的实现三、HiddenHttpMethodFilter四、源码实例1.工程文件图2.Employee实体类2.dao层:EmployeeDao类3.首页:index.html4.控制层:EmployeeController类5.employee_add.html页面6.employee_list.html页…

阀门状态监测和预测性维护的原理和实施步骤

随着制造业数字化转型的推进,预测性维护(Predictive Maintenance,简称PdM)成为提高生产效率和设备可靠性的关键策略之一。在流程工厂中,阀门作为重要的设备之一,起着控制流体流动的关键作用。本文将探讨如何…

基于AVR128单片机智能传送装置

一、系统方案 1、板载可变电阻(电位器)R29的电压作为处理器ATmega128的模数转换模块中单端ADC0的模拟信号输入(跳线JP13短接)。 2、调节电位器,将改变AD转换接口ADC0的模拟信号输入,由处理器完成ADC0的A/D转…

积分商城系统源码_积分兑换礼品功能设计_OctShop

礼品系统:礼品需要积分兑换,买家在平台消费,评价商品或店铺赚取积分,商家发布礼品可赚取积分,商家积分可用于奖励买家评价商品。礼品系统和商品库差不多,礼品的发布,修改,展示,库存以…

vue中bus的使用和涉及到的问题

创建一个js文件 import Vue from "Vue" export default new Vue 我们可以直接在要使用的页面中引用使用 import bus from /assets/js/eventBus.js;bus.$emit("info", "123") // 使用bus.$on("info", (val) > { // 接收console.l…

项目透明度如何改善团队的工作流程?

无论项目简单还是复杂,项目透明度一直是项目过程中的重要因素。在当今快节奏的商业环境中,对透明度的关注与日俱增,现已成为团队及其项目成功的关键因素。 但创建一个透明的流程对团队管理而言,是一个重大挑战,因团队…

Linux重置ROOT密码(CentOS)

解释说明 在CentOS中重置root密码通常需要进入单用户模式,这是一个没有密码限制的特殊模式,允许您以root权限登录系统并更改密码。 重启系统 如果您无法登录到系统,可以通过重启系统来开始这个过程。您可以使用虚拟机控制台、物理服务器控制台…

探究finally代码块是否执行

情况一:try代码块正常执行,无异常,finally代码块无retrun; 代码演示 public class Test38 {public static void main(String[] args) {int foo foo();System.out.println("foo:" foo);}public static int foo() {tr…

MySQL - 表空间碎片整理方法

MySQL数据库中的表在进行了多次delete、update和insert后,表空间会出现碎片。定期进行表空间整理,消除碎片可以提高访问表空间的性能。 检查表空间碎片 下面这个实验用于验证进行表空间整理后对性能的影响,首先检查这个有100万记录表的大小&…

【操作系统】中断和异常

中断的作用 CPU上会执行两种程序:内核程序和应用程序 在适合的情况下,操作系统内核会把CPU的使用权主动让给应用程序,“中断”是让操作系统内核夺回CPU使用权的唯一途径(用户态转内核态)。 中断技术保证了并发。 中…

用于视频 4K 渲染和编辑的最佳 GPU,适用于高端预算

如果本地渲染和编辑电脑配置不够,如何最节省成本和时间解决: 本地普通电脑连接到赞奇云工作站,秒变超算机,根据需求选择合适的配置,不仅仅能提升渲染速度,还能提升软件的运行速率。 通过云工作站、软件中…

18-使用钩子函数判断用户登录权限-登录前缀

钩子函数的两种应用: (1). 应用在app上 before_first_request before_request after_request teardown_request (2). 应用在蓝图上 before_app_first_request #只会在第一次请求执行,往后就不执行, (待定,此属性没调试通过) before_app_request # 每次请求都会执行一次(重点…

运维Shell脚本小试牛刀(一)

一: Shell中循环剖析....... #!/bin/bash - # # # # FILE: countloop.sh # USAGE: ./countloop.sh # DESCRIPTION: # OPTIONS: ------- # REQUIREMENTS: --------- # # BUGS: ------ # N…

日常生活小技巧 -- 单位换算

开发过程中经常需要需要单位换算的地方。 可以使用工具进行转换: 工具:单位转换 常用单位: 1、角度转换 1弧度(rad) 180/PI 度(deg) 57.29577951308232 度(deg) 1度…

开学有哪些电容笔值得买?性价比高的触控笔推荐

要知道,一款苹果原装电容笔,售价都要接近一千多块钱。事实上,对于那些没有很多预算的人来说,平替电容笔是一个很好的选择。一支苹果的电容笔,比平替电容笔贵了四倍,但比起苹果的原装电容笔,书写…

大模型理解之CLIP

前言 2021年2月份,CLIP模型被提出,想法很简单,性能高效,而且具备很好的泛化性。我在这里简单谈论下我对CLIP模型的理解,以及发现的一些问题。 我是在沐神的视频中了解的CLIP, 里面提到CLIP最大的贡献在于打破了固定类…

【HCIP】17.MPLS VPN

MPLS VPN 不是一个技术,是一堆技术的集合,是一种解决方案 什么是VPN?虚拟专用网络 能够解决公司之间互联的一种技术,在原始的报文上面再重新封装一个或者多个全新的头部,完成在公共网络上的传递 裸纤(每…

【VScode推理模型部署】ONNX runtime

推理模型部署(一):ONNX runtime 实践 VSCode配置之OnnxRuntime(CPU) && YOLOv7验证 简单来说,对于机器学习模型过程可分为训练迭代和部署上线两个方面: 训练迭代,即通过特定的数据集、模型结构、损失函数和评价指标的确…

新生应如何在线确认录取结果和提交入学资料?

马上就要开学啦,学生还没到校的时候,老师如何让学生查询完录取结果,并且向老师确认自己已经查看过呢?最好还能直接提交入学资料,这样就不用开了学现场一个一个写,费时又费力。 老师们可以使用易查分制作一…

为你解决在Mybatis中的疑惑?Mybatis中【关联关系映射】

一.介绍Mybatis中【关联关系映射】 1.什么是Mybatis中【关联关系映射】? 可以实现不同实体之间的关联查询和映射。关联关系映射可以将多个实体对象之间的关联关系通过数据库查询进行映射,实现对象之间的关联操作。 2.常见的Mybatis【关联关系映射】 2.…