【JUC】动态线程池
一、背景
需求:动态调整参数、细粒度监控、秒级监控
线程池参数调优,需要不断的进行测试,判断内存占用等因素,调优没法热部署
别再纠结线程池大小了,没有固定公式
二、美团DynamicTp
dynamictp官网
源码
掘金专栏
Java线程池实现原理及其在美团业务中的实践
(一)核心功能
- 动态调参
- 线程池的核心大小
- 最大线程大小
- 队列长度
- 任务监控
- 线程池的任务执行情况
- 最大任务执行时间
- 平均任务执行时间
- 负载告警
- 线程池负载数达到一定的阈值
- 操作日志
- 参看线程池参数的修改记录
- 参看线程池参数的修改记录
原理
(1)动态更新
直接调用 JDK 的 setCoreThreadSize等方法(public)
(2)监控
作为Bean注入容器,修改配置后,通过发布Eventt,异步通知到钉钉群
(3)注意事项
1.普通 JUC 线程池想要被监控,可以 @Bean 定义时加 @DynamicTp 注解
2.动态线程池实例服务启动时会根据配置中心的配置动态注册到Spring容器中,建议不要用@Bean编程式重复声明同一线程池实例,直接配置在配置中心就行
3.阻塞队列只有 VariableLinkedBlockingQueue 类型可以修改 capacity。
该类型功能和 LinkedBlockingQueue 相似, 只是 capacity 不是 final 类型,可以修改,VariableLinkedBlockingQueue 参考 RabbitMq 的实现
(二)adapter模块
功能解读
主要是用来适配一些第三方组件的线程池管理,让第三方组件内置的线程池也能享受到动态参数调整,监控告警这些增强功能。
1,Jetty
2,Undertow
3,Dubbo线程池
4,RocketMq
5,Hystrix
三、案例
【JUC】动态线程池相关推荐
- 美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇
大家好,这篇文章我们来聊下动态线程池开源项目(DynamicTp)的通知告警模块.目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启.告警阈值.告警间隔时间.平台等,具体代码请看core ...
- 美团动态线程池实践思路,开源了
大家好,今天我们来聊一个比较实用的话题,动态可监控的线程池实践,全新开源项目(DynamicTp)地址在文章末尾,欢迎交流学习. 写在前面 稍微有些Java编程经验的小伙伴都知道,Java的精髓在ju ...
- 美团动态线程池实践思路已开源
项目地址 gitee地址:gitee.com/yanhom/dyna- github地址:github.com/lyh200/dyna- 系列文章 动态线程池框架(DynamicTp),监控及源码解析 ...
- 美团动态线程池开源框架 DynamicTp
背景 使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 1.代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 2.凭经验设置 ...
- linux动态线程池--原理,这儿的代码不完整
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量.文章的最后,我们 ...
- apollo源码分析 感知_Kitty中的动态线程池支持Nacos,Apollo多配置中心了
目录 回顾昨日 nacos 集成 Spring Cloud Alibaba 方式 Nacos Spring Boot 方式 Apollo 集成 自研配置中心对接 无配置中心对接 实现源码分析 兼容 A ...
- 轻量级动态线程池才是“王道”?
一.前言 最初设计 Hippo4j 的初衷是尽可能提高以及保障线程池对于线上应用的作用,所以加了很多个性化功能,这也间接导致强依赖 Hippo4j Server 项目. 自 Hippo4j 1.0.0 ...
- 借鉴美团文章实现的动态线程池,已开源
大家好, 我是龙台 给自己定了个小目标,hippo4j 年底达到 1k star! GitHub:https://github.com/acmenlt/dynamic-threadpool Site: ...
- Kitty中的动态线程池支持Nacos,Apollo多配置中心了
目录 回顾昨日 nacos集成 Spring Cloud Alibaba 方式 Nacos Spring Boot 方式 Apollo集成 自研配置中心对接 无配置中心对接 实现源码分析 兼容Apol ...
最新文章
- Spring配置文件中注入复杂类型属性
- Python中的排序sorted(d.items(), key=lambda x: x[1])
- Windows via C/C++ 学习(15)线程调度、线程优先级和亲缘性
- 简单排序——冒泡排序,选择排序,插入排序,对象排序
- linux 中的gzip命令
- 【C语言】单词个数统计(库函数第一次运用)
- FreeRTOS(2)---学习FreeRTOS前的准备工作
- axis2生成客户端代码_利用ApiPost一键、快速生成接口文档!女猿也过38节!
- GDI+入门——带你走进Windows图形的世界
- css中绝对定位与相对定位的区别
- 【预测模型】基于matlab RLS算法预测【含Matlab源码 222期】
- 抑郁症自测量表测试软件,抑郁自评量表
- Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available
- 给定一个整数,请将该数各个位上数字反转得到一个新数。
- 【基于时间序列的变形观测的数据处理方法的研究】
- 计算机歌曲夜空中最亮的星,抖音夜空中最亮的星电视剧插曲歌曲介绍
- 正版Xshell免费使用
- 适用于监控大屏的websocket
- 在电脑上写好的移动端页面,如何在手机上快速查看
- PPT配色的实用小技巧分享
热门文章
- ValueError: Length mismatch: Expected axis has 4 elements, new values have 3 elements
- QT :-1: error: LNK1168: 无法打开 xxx.exe 进行写入
- ShadowPLCs A Novel Scheme for Remote Detection of Industrial Process Control Attacks
- 这篇文章会让你熟悉文件的各种操作,让你对文件的认识更加深入【c语言】
- 火狐浏览器各版本下载地址
- aws 噼里啪啦做了一天测试 花了4$
- 英飞凌TC264之PWM舵机控制
- Excel表格中如何快速生成下拉菜单
- C#中Internal关键字的总结
- arcgispro3.1(账号登陆)