美团的动态线程池,不依赖中间件可以实现么?
2021/10/28 6:12:56
本文主要是介绍美团的动态线程池,不依赖中间件可以实现么?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
美团的动态线程池,不依赖中间件可以实现么?
- 1. 为什么写这个项目?
- 2. 它解决了什么问题?
- 3. 它有什么特性?
- 4. 如何运行 Demo?
- 5. 查看源码能收获什么?
- 6. 回顾总结
1. 为什么写这个项目?
大家好,我是龙台。
美团线程池文章 介绍中,因为业务对线程池参数没有合理配置,触发过几起生产事故,进而引发了一系列思考。最终决定封装线程池动态参数调整,扩展线程池监控以及消息报警等功能
在开源平台找了挺多动态线程池项目,从功能性以及健壮性而言,个人感觉不满足企业级应用
因为对动态线程池比较感兴趣,加上想写一个有意义的项目,所以决定自己来造一个轻量级的轮子
想给项目起一个简单易记的名字,类似于 Eureka、Nacos、Redis;后来和朋友商量,决定以动物命名:Hippo(河马)
Hippo GitHub地址
├── dynamic-threadpool │ ├── dynamic-threadpool-common -- 公共模块 │ ├── dynamic-threadpool-config -- 配置中心 │ ├── dynamic-threadpool-console -- 控制台 │ ├── dynamic-threadpool-discovery -- 注册中心 │ ├── dynamic-threadpool-spring-boot-starter -- Client 依赖组件 │ ├── dynamic-threadpool-example -- 示例项目 │ └── dynamic-threadpool-server -- 服务端 │ └── dynamic-threadpool-tools -- 抽象工具类
2. 它解决了什么问题?
线程池在业务系统应该都有使用到,帮助业务流程提升效率以及管理线程,多数场景应用于大量的异步任务处理
虽然线程池提供了我们许多便利,但也并非尽善尽美,比如下面这些问题就无法很好解决
如果线程池的配置涉及到上述问题,那么就有可能需要发布业务系统来解决;如果发布后参数仍不合理,继续发布…
Hippo 很好解决了这个问题,它将业务中所有线程池统一管理,遇到上述问题不需要发布系统就可以替换线程池参数
3. 它有什么特性?
应用系统中线程池并不容易管理。参考美团的设计,Hippo 按照租户、项目、线程池的维度划分。再加上系统权限,让不同的开发、管理人员负责自己系统的线程池操作
举个例子,小编在一家公司的公共组件团队,团队中负责消息、短链接网关等项目。公共组件是租户,消息或短链接就是项目
Hippo 除去动态修改线程池,还包含实时查看线程池运行时指标、负载报警、配置日志管理等。具体功能如下图
4. 如何运行 Demo?
目前动态线程池功能已经完成,可以直接把代码拉到本地运行。项目中数据库是作者 ECS Docker 搭建,大家直接使用即可
- 启动
dynamic-threadpool-server
模块下 ServerApplication 应用类 - 启动
dynamic-threadpool-example
模块下 ExampleApplication 应用类
通过接口修改线程池中的配置。HTTP POST 路径:http://localhost:6691/v1/cs/configs,Body 请求体如下:
{ "ignore": "tenantId、itemId、tpId 代表唯一线程池,请不要修改", "tenantId": "prescription", "itemId": "dynamic-threadpool-example", "tpId": "message-produce", "coreSize": 10, "maxSize": 15, "queueType": 9, "capacity": 100, "keepAliveTime": 10, "rejectedType": 7, "isAlarm": 0, "capacityAlarm": 81, "livenessAlarm": 82 }
接口调用成功后,观察 dynamic-threadpool-example 控制台日志输出,日志输出包括不限于此信息即为成功
[
这篇关于美团的动态线程池,不依赖中间件可以实现么?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南