vlambda博客
学习文章列表

推荐一个强大的开源动态线程池项目

今天和大家分享的是一个动态线程池,Hippo4J

Hippo4J,是一个基于美团动态线程池的设计理念,针对该类线程池,在一般的基础上增强了动态调参、监控、报警等功能的一个版本。

Hippo4J可以通过Web控制台对线程池参数进行动态调整,同时支持集群内线程池的差异化配置。还可以内置线程池参数变更通知,以及运行过载时的报警功能。

Hippo4J的好处在于可以按照租户、项目、线程池等不同维度划分,然后通过系统权限的控制,从而使得不同的开发、管理人员专心负责自己系统的线程池,互不干扰。

Hippo4J目前有两种使用模式:轻量级依赖配置中心以及无中间件依赖版本。

轻量级动态线程池管理,依赖 Apollo、Nacos 等三方配置中心(任选其一)完成线程池参数动态变更,同样包含运行时报警、监控功能。

无依赖版本,部署 hippo4j-server 服务,通过可视化 Web 界面完成线程池的创建、变更以及查看,不依赖三方中间件。相比较前者,功能会更强大,但是也引入了一定的复杂性。需要部署一个 Java 服务,以及 MySQL 数据库。

如果一定要对比的话,两者的区别在于:

依赖版本:依赖Nacos、Apollo 等配置中心(任选其一)、需要配置中心补充线程池相关参数、可以实现包含基础功能:参数动态化、运行时监控、报警等。

无依赖版本:部署 Hippo4J Server(内部无依赖中间件)、使用Hippo4J Server Web 控制台添加线程池记录,在基础功能之外扩展控制台界面、线程池堆栈查看、线程池运行信息实时查看、历史运行信息查看、线程池配置集群个性化等。

不过比较好的是,两者在进行替换的时候,无需修改业务代码。

那最后,看一下作者对于Hippo4J可以有什么好处的解释:

  • 原生线程池创建时无法合理评估参数问题。比如功能使用到线程池,遇到突发流量洪峰,频繁拒绝任务。Hippo4J 提供动态修改参数功能,避免修改线程池参数后重启线上应用;
  • 当线程池运行过程中无法再接受新的任务,此时你想知道 线程池内线程都在做什么?Hippo4J 提供查看线程池堆栈功能;
  • 某接口频繁超时,内部依赖线程池执行,想要 查看过去一段时间线程池运行参数情况。Hippo4J 提供历史数据图表查看功能;
  • 原生线程池无任务报警策略。Hippo4J 内置四种报警策略,分别是:活跃度报警、队列容量报警、拒绝策略报警和运行时间过长报警。

关注我,每天了解一个牛x、好用、有趣的东东


往期推荐