动态线程池项目,赶紧收藏学习!
大家好,我是TJ
一个励志推荐10000款开源项目与工具的程序员
一个复杂的系统往往依赖于线程池控制并发线程,从而达到最优的处理效率,但是一旦线程池的配置没有做好就会引发各种各样的生产事件,造成不可挽回的损失。
不过TJ君今天要和大家分享的是一款功能强大的动态线程池项目,同时还附带监控报警功能,来看一下吧。
Hippo,一款充分考虑了功能性及健壮性的动态线程池开源项目,除了传统的帮助业务流程提升效率以及管理线程之外,还可以处理大量异步任务,对于一些线程池常见的问题,例如:
接口频繁抛出拒绝策略 任务堆积后接口响应时间拉长 空闲线程过多,资源分配不均 高峰期处理速度下降
一般的线程池往往需要发布业务系统调整配置参数来解决,然后通过不停的调整参数发布参数进行优化,Hippo就很好的解决这一点,将所有线程池统一管理,不需要发布就可以直接更换配置参数,提高效率。
而比较其他传统线程池,Hippo是按照租户、项目、线程池的维度划分。再加上系统权限,让不同的开发、管理人员负责自己系统的线程池操作,从而可以精确定位,更清晰更细节。
项目作者给出一个实例:
某个公共组件团队,团队中负责消息、短链接网关等项目。公共组件是租户,消息或短链接就是项目
Hippo 除去动态修改线程池,还包含实时查看线程池运行时指标、负载报警、配置日志管理等功能,如下图
对线程池配置一直焦虑的小伙伴可以试一下,关于如何运行,可以直接把代码拉到本地运行。导入 Hippo 初始化 SQL 语句,再启动dynamic-threadpool-server
模块下 ServerApplication
应用类,启动 dynamic-threadpool-example
模块下 ExampleApplication
应用类即可。
然后可以直接通过 http://localhost:6691/v1/cs/configs
修改线程池配置:
{
"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
}
等待接口调用成功后,控制台日志输出,如果日志中的内容不止包含下面部分就OK了:
[🔥 MESSAGE-PRODUCE] Changed thread pool. coreSize :: [11=>10], maxSize :: [15=>15], queueType :: [9=>9]
capacity :: [100=>100], keepAliveTime :: [10000=>10000], rejectedType :: [7=>7]
项目马上要发布1.0.0 RELEASE 版本,届时可以部署Server 服务,只需要引入 Starter 组件到业务系统中,即可完成动态修改、监控、报警等特性。
目前可以直接下载项目的框架源码,查阅其中配置中心、注册中心、设计模式、线程池监控、Spring应用等多方面的内容。感兴趣的小伙伴来看看吧:
点击下方卡片,关注公众号“TJ君”
回复“多线程”,获取仓库地址
关注我,每天了解一个牛x、好用、有趣的东东
往期推荐