查看原文
其他

动态线程池项目,赶紧收藏学习!

TJ TJ君 2021-12-11

大家好,我是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、好用、有趣的东东

往期推荐

13KB的代码能做什么?有些人可是弄出了一个完整的游戏!

不加班、正常双休过周末,这样的公司有没有?955企业清单大揭秘!

两款自动检测代码工具与插件,开源真香

IDEA高颜值之最吸引小姐姐插件集合!让你成为人群中最靓的那个崽!

开源低代码场景化工作台,自动给你生成代码

完善的仿京东电商开源项目



: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存