# dynamic-threadpool **Repository Path**: cjwwarren/dynamic-threadpool ## Basic Information - **Project Name**: dynamic-threadpool - **Description**: 🔥 强大的动态线程池,附带监控报警功能(没有依赖中间件),完全遵循阿里巴巴编码规范。Powerful dynamic thread pool, does not rely on any middleware, with monitoring and alarm function. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-25 - **Last Updated**: 2021-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
:fire: 动态线程池(Hippo4J)系统,包含 Server 端及 SpringBoot Client 端需引入的 Starter.
## 为什么写这个项目? [美团线程池文章](https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html "美团线程池文章") 介绍中,因为业务对线程池参数没有合理配置,触发过几起生产事故,进而引发了一系列思考。最终决定封装线程池动态参数调整,扩展线程池监控以及消息报警等功能 在开源平台找了挺多动态线程池项目,从功能性以及健壮性而言,个人感觉不满足企业级应用 因为对动态线程池比较感兴趣,加上想写一个有意义的项目,所以决定自己来造一个轻量级的轮子 想给项目起一个简单易记的名字,类似于 Eureka、Nacos、Redis;后和朋友商量,决定以动物命名:**Hippo4J**  ## 它解决了什么问题? 线程池在业务系统应该都有使用到,帮助业务流程提升效率以及管理线程,多数场景应用于大量的异步任务处理 虽然线程池提供了我们许多便利,但也并非尽善尽美,比如下面这些问题就无法很好解决  如果线程池的配置涉及到上述问题,那么就有可能需要发布业务系统来解决;如果发布后参数仍不合理,继续发布...... Hippo4J 很好解决了这个问题,它将业务中所有线程池统一管理,遇到上述问题不需要发布系统就可以替换线程池参数  ## 它有什么特性? 应用系统中线程池并不容易管理。参考美团的设计,Hippo4J 按照租户、项目、线程池的维度划分。再加上系统权限,让不同的开发、管理人员负责自己系统的线程池操作 举个例子,小编在一家公司的公共组件团队,团队中负责消息、短链接网关等项目。公共组件是租户,消息或短链接就是项目 | 模块 | 模块名称 | 注释 | | --------------------------- | ---------- | ---------------------------------------- | | hippo4j-auth | 用户权限 | 用户、角色、权限等功能 | | hippo4j-common | 公共模块 | - | | hippo4j-config | 配置中心 | 提供线程池准实时更新功能 | | hippo4j-console | 控制台 | 对接前端项目 | | hippo4j-discovery | 注册中心 | 提供线程池项目实例注册、续约、下线等功能 | | hippo4j-spring-boot-starter | Starter | 客户端依赖组件 | | hippo4j-example | 示例项目 | - | | hippo4j-server | 服务端 | Server 集成各组件 | | hippo4j-tools | 抽象工具类 | GitHub 变更监控、操作日志等组件 | Hippo4J 除去动态修改线程池,还包含实时查看线程池运行时指标、负载报警、配置日志管理等  ## 如何运行 Demo? 目前动态线程池功能已经完成,可以直接把代码拉到本地运行。导入 [Hippo4J 初始化 SQL 语句](./hippo4j-server/src/main/resources/hippo_manager.sql) 1. 启动 `hippo4j-server` 模块下 ServerApplication 应用类 2. 启动 `hippo4j-example` 模块下 ExampleApplication 应用类 > 🌟 Hippo4J 已集成前端项目,详情参考 [Run Console](http://hippox.cn/zh-cn/docs/run/runConsole.html) 通过接口修改线程池中的配置。HTTP POST 路径:http://localhost:6691/v1/cs/configs ,Body 请求体如下: ```json { "ignore": "tenantId、itemId、tpId 代表唯一线程池,请不要修改", "tenantId": "prescription", "itemId": "dynamic-threadpool-example", "tpId": "message-produce", "coreSize": 10, "maxSize": 15, "queueType": 9, "capacity": 100, "keepAliveTime": 10, "rejectedType": 3, "isAlarm": 0, "capacityAlarm": 81, "livenessAlarm": 82 } ``` 接口调用成功后,观察 dynamic-threadpool-example 控制台日志输出,日志输出包括不限于此信息即为成功 ```tex [🔥 MESSAGE-PRODUCE] Changed thread pool. coreSize :: [11=>10], maxSize :: [15=>15], queueType :: [9=>9] capacity :: [100=>100], keepAliveTime :: [10000=>10000], rejectedType :: [7=>7] ``` 现阶段已集成钉钉消息推送,后续会持续接入企业微信、邮箱、飞书、短信等通知渠道。可以通过添加钉钉群体验消息推送,群号:31764717
![]() 配置变更 |
![]() 报警通知 |
|
|
|