# breathe-dynamic-thread-pool **Repository Path**: lvzihao521/breathe-dynamic-thread-pool ## Basic Information - **Project Name**: breathe-dynamic-thread-pool - **Description**: 一个动态线程池框架,旨在提供高效、灵活且可扩展的线程管理方案,适用于高并发和资源密集型应用。 集成了大模型接口,可以给予一些调参的建议。 实现了线程池的通知告警,多配置实现参数变化,运行监控。 代码零入侵,轻量简单 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-04-08 - **Last Updated**: 2025-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # breathe-dtp 这个动态线程池的实现是我通过阅读美团动态线程池的实现这篇文章,然后通过学习codefox大佬的一些有关线程池的理论和文章,并且观看了Dynamic-Tp的一些实现思路后,再经过自己的总结和根据自己的需求实现的一个动态线程池组件 目前由于版本冲突,经过实际使用,发现不能应用在springboot3.3.5中,必须是springboot3.1.x及以下版本(仅针对nacos) ![img.png](readme_png/img.png) 通过这个架构图,一步一步实现动态线程池。 ## 项目完成路线: ### 线程池的管理 通过一个Map集合来管理线程池,Key是线程池的name,Value是线程池 #### 目前状况 项目的监控,报警,动态修改参数功能基本完成,现在打算不使用SpringAI,利用langchain4j来进行大模型的调用 ### 进行线程池的注入 目前打算通过注解的形式,这次不用AOP来控制注解了,这次使用BeanPostProcessor,利用初始化后的后置处理器来在线程池初始化后来获取。通过注解定位一下,然后将这个添加到上面的map结构中 ### SPI实现 其实就是设计一个接口,然后之后再进行接口的实现,然后将这个接口暴露给用户,让用户也可以实现这个接口,从而实现spi。 ### 配置文件 https://cloud.tencent.com/developer/article/2450476?policyId=1004之后根据这个链接学习一下springboot3如何手写starter ### 运行监控如何实现 前端可以手写一个controller请求,让cursor等一些AI帮我实现前端,使得运行时可视化,这个不是重点 第二种实现是通过logback精确的把控日志的输出,来将运行的监控打印到日志中。 ### 配置中心 nacos就通过configService的addListener来监听,前两个一个是date_id,一个是GROUP,第三个是new Listener(),里面实现一个线程池和一个回调事件,如果配置发生了更改,那么nacos发现以后就会通过这个线程池执行这个回调事件。 redis的话就KEY是线程池名字(beanName(统一一下)),Value就是线程池配置的json串,到时候直接更新就行。 这是目前两个实现的想法。 ### 通知告警 这个是通过企业微信的机器人来发送的,可以通过群聊中创建一个机器人,然后可以了解很多发送格式,我目前只有markdown,之后可能会添加图片或图文的链接 参考这个 ![img1.png](readme_png/img1.png) ### 不同种类的线程池 自己手搓一些符合我们情景和代码的线程池(Tomcat?)