别在简历上写 CRUD 项目了,来个动态线程池不香吗

开发 前端
目前开源的动态线程池也不算少,其实都是基于美团的那个思路,底层原理不算很难,所以上手难度比较低,算是性价比很高的项目了。

又到了项目推荐专栏啦,相比于业务类项目,轮子类项目或者工具类项目其实会更受欢迎,今天推荐两款动态线程池,文档都都比较全。目前开源的动态线程池也不算少,其实都是基于美团的那个思路,底层原理不算很难,所以上手难度比较低,算是性价比很高的项目了。

动态线程池 1:DynamicTp

图片

项目地址:

  • Github:https://github.com/dromara/dynamic-tp
  • 教程地址:https://dynamictp.cn/guide/other/articles.html

项目架构:

图片

项目简介:基于配置中心的轻量级动态线程池,内置监控告警功能,集成常用中间件线程池管理,可通过SPI自定义扩展实现,目前最新版本 v1.1.0 具有以下特性

  • 代码零侵入
  • 通知告警:已支持企业微信、钉钉、飞书、邮件报警,同时提供 SPI 接口可自定义扩展实现
  • 运行监控:定时采集线程池指标数据,支持通过 MicroMeter、JsonLog 日志输出、Endpoint 三种方式,可通过 SPI 接口自定义扩展实现
  • 任务增强:提供任务包装功能
  • 多配置中心支持:已支持 Nacos、Apollo、Zookeeper、Consul、Etcd、Polaris,同时也提供 SPI 接口可自定义扩展实现
  • 中间件线程池管理:集成管理常用第三方组件的线程池,已集成 Tomcat、Jetty、Undertow、Dubbo、RocketMq、Hystrix、Grpc、Motan、Okhttp3、Brpc、Tars、SofaRpc、RabbitMq 等组件的线程池管理(调参、监控报警)
  • 轻量简单:基于 SpringBoot 实现,引入 starter,接入只需简单 4 步就可完成,顺利 3 分钟搞定
  • 多模式:参考 Tomcat 线程池提供了 IO 密集型场景使用的 EagerDtpExecutor 线程池
  • 兼容性:JUC 普通线程池和 Spring 中的 ThreadPoolTaskExecutor 也可以被框架监控,@Bean 定义时加 @DynamicTp 注解即可
  • 可靠性:框架提供的线程池实现 Spring 生命周期方法,可以在 Spring 容器关闭前尽可能多的处理队列中的任务
  • 高可扩展:框架核心功能都提供 SPI 接口供用户自定义个性化实现(配置中心、配置文件解析、通知告警、监控数据采集、任务包装等等)

代码结构:

图片

动态线程池 2:Hippo4j

项目地址:

  • Github:https://github.com/opengoofy/hippo4j
  • 教程地址:https://hippo4j.cn/docs/user_docs/intro

项目架构:

图片

项目简介:动态可观测线程池,提高系统运行保障能力,提供以下功能支持:

  • 全局管控 - 管理应用线程池实例。
  • 动态变更 - 应用运行时动态变更线程池参数,包括但不限于:核心、最大线程数、阻塞队列容量、拒绝策略等。
  • 通知报警 - 内置四种报警通知策略,线程池活跃度、容量水位、拒绝策略以及任务执行时间超长。
  • 数据采集 - 支持多种方式采集线程池数据,包括但不限于:日志、内置采集、Prometheus、InfluxDB、ElasticSearch 等。
  • 运行监控 - 实时查看线程池运行时数据,自定义时间内线程池运行数据图表展示。
  • 功能扩展 - 支持线程池任务传递上下文;项目关闭时,支持等待线程池在指定时间内完成任务。
  • 多种模式 - 内置两种使用模式:依赖配置中心 和 无中间件依赖。
  • 容器管理 - Tomcat、Jetty、Undertow 容器线程池运行时查看和线程数变更。
  • 框架适配 - Dubbo、Hystrix、RabbitMQ、RocketMQ 等消费线程池运行时数据查看和线程数变更。
  • 变更审核 - 提供多种用户角色,普通用户变更线程池参数需要 Admin 用户审核方可生效。
  • 动态化插件 - 内置多种线程池插件,支持用户自定义插件以及运行时扩展。
  • 多版本适配 - 经过实际测试,已支持客户端 SpringBoot 1.5.x => 2.7.5 版本(更高版本未测试)
责任编辑:武晓燕 来源: 飞天小牛肉
相关推荐

2022-03-22 09:20:57

应用线程池技术

2024-02-01 08:21:40

2021-12-17 15:05:55

CSSwhenelse

2023-12-01 08:18:24

Redis网络

2020-09-23 13:37:25

Redis6.0

2020-11-17 10:20:53

Redis多线程单线程

2020-01-21 21:15:16

WiFi网络WiFi6

2021-12-02 06:34:34

GraylogELK日志

2022-02-14 16:08:15

开源项目线程池动态可监控

2021-12-03 10:46:49

ELKGraylog运维

2021-04-06 10:48:52

MySQLElasticsear数据库

2021-12-05 23:17:18

iOS苹果系统

2021-07-08 06:52:41

ESClickHouse Lucene

2021-01-11 08:03:30

阿里中台项目

2020-07-03 15:10:35

Java Rust 开发

2020-05-09 10:18:31

Java开源工具

2021-05-19 09:37:45

SessionTokencookie

2021-11-02 16:44:40

部署DevtoolsJRebel

2020-10-21 09:19:27

Flutter开源项目

2020-05-25 10:37:58

自学编程技巧
点赞
收藏

51CTO技术栈公众号