All Projects → acmenlt → dynamic-threadpool

acmenlt / dynamic-threadpool

Licence: Apache-2.0 license
📌 强大的动态线程池框架,附带监控报警功能。支持 JDK、Tomcat、Jetty、Undertow 线程池;Dubbo、Dubbox、RabbitMQ、RocketMQ、Hystrix 消费线程池(更多框架线程池还在适配中)。内置两种使用模式:轻量级依赖配置中心以及无中间件依赖版本。

Programming Languages

java
68154 projects - #9 most used programming language
Vue
7211 projects
javascript
184084 projects - #8 most used programming language
SCSS
7915 projects
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to dynamic-threadpool

github-readme-activity-graph
A dynamically generated activity graph to show your GitHub activities of last 31 days.
Stars: ✭ 1,029 (-71.49%)
Mutual labels:  dynamic
electrom
Electrom is a resource management solution for Electron applications, which is convenient for performance management and friendly debugging of multiple windows.
Stars: ✭ 20 (-99.45%)
Mutual labels:  monitor
KDynamic
An Alternative to MacOS Mojave Dynamic Theme and Wallpaper Changer
Stars: ✭ 48 (-98.67%)
Mutual labels:  dynamic
Huhnitor
Intergalactic serial monitor for ESP8266 Deauther
Stars: ✭ 265 (-92.66%)
Mutual labels:  monitor
AirPodsDesktop
☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP)
Stars: ✭ 462 (-87.2%)
Mutual labels:  monitor
IYFThreading
A C++11 thread pool and profiler
Stars: ✭ 24 (-99.33%)
Mutual labels:  thread-pool
wowstat
A World of Warcraft realm status monitor
Stars: ✭ 20 (-99.45%)
Mutual labels:  monitor
homebridge-callmonitor
Signals incoming and outgoing calls using the call monitor facility in Fritz!Box devices via HomeKit
Stars: ✭ 25 (-99.31%)
Mutual labels:  monitor
pf-azure-sentinel
Parse pfSense/OPNSense logs using Logstash, GeoIP tag entities, add additional context to logs, then send to Azure Sentinel for analysis.
Stars: ✭ 24 (-99.33%)
Mutual labels:  monitor
redux-usage-report
A Redux Devtools monitor to audit your app's usage of the store
Stars: ✭ 41 (-98.86%)
Mutual labels:  monitor
super-workers
🐴 Distribute load on front-end via parallelism
Stars: ✭ 93 (-97.42%)
Mutual labels:  thread-pool
react-mops
🐶 Modify Orientation Position Size
Stars: ✭ 40 (-98.89%)
Mutual labels:  resizable
venusscript
A dynamic, interpreted, scripting language written in Java.
Stars: ✭ 17 (-99.53%)
Mutual labels:  dynamic
fastdash
FastDash = FastAPI + DashBoard.
Stars: ✭ 23 (-99.36%)
Mutual labels:  monitor
Equinox
🌇 🌃 Create dynamic wallpapers for macOS.
Stars: ✭ 737 (-79.58%)
Mutual labels:  dynamic
QuickTraceiOSLogger
A real time iOS log trace tool, view iOS log with pc web browser under local area network, which will automatically scroll like xcode. 一个实时的iOS日志跟踪工具,在局域网中使用 PC Web 浏览器查看 iOS 日志,它将像xcode一样自动滚动。
Stars: ✭ 16 (-99.56%)
Mutual labels:  monitor
guardkit
基于Java的监控框架
Stars: ✭ 25 (-99.31%)
Mutual labels:  monitor
iOS-Monitor-Resources
对各厂商的 iOS SDK 性能监控方案的整理和收集后的资源
Stars: ✭ 31 (-99.14%)
Mutual labels:  monitor
resizable-panels
Web Component that allows to resize its childrens vertically or horizontally
Stars: ✭ 18 (-99.5%)
Mutual labels:  resizable
laravel-livewire-modals
Dynamic Laravel Livewire Bootstrap modals.
Stars: ✭ 63 (-98.25%)
Mutual labels:  dynamic

动态可观测线程池

image

通过对 JDK 线程池的增强,以及扩展三方框架底层线程池等功能,为业务系统提高线上运行保障能力。

GitHub stars Contributors

Gitee Docker Pulls codecov EN doc


线程池痛点

线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。在高并发以及大批量的任务处理场景,线程池的使用是必不可少的。

如果有在项目中实际使用线程池,相信你可能会遇到以下痛点:

  • 线程池随便定义,线程资源过多,造成服务器高负载。

  • 线程池参数不易评估,随着业务的并发提升,业务面临出现故障的风险。

  • 线程池任务执行时间超过平均执行周期,开发人员无法感知。

  • 线程池任务堆积,触发拒绝策略,影响既有业务正常运行。

  • 当业务出现超时、熔断等问题时,因为没有监控,无法确定是不是线程池引起。

  • 原生线程池不支持运行时变量的传递,比如 MDC 上下文遇到线程池就 GG。

  • 无法执行优雅关闭,当项目关闭时,大量正在运行的线程池任务被丢弃。

  • 线程池运行中,任务执行停止,怀疑发生死锁或执行耗时操作,但是无从下手。

什么是 Hippo4j

提供以下功能支持:

  • 全局管控 - 管理应用线程池实例。

  • 动态变更 - 应用运行时动态变更线程池参数,包括但不限于:核心、最大线程数、阻塞队列容量、拒绝策略等。

  • 通知报警 - 内置四种报警通知策略,线程池活跃度、容量水位、拒绝策略以及任务执行时间超长。

  • 数据采集 - 支持多种方式采集线程池数据,包括但不限于:日志、内置采集、Prometheus、InfluxDB、ElasticSearch 等。

  • 运行监控 - 实时查看线程池运行时数据,自定义时间内线程池运行数据图表展示。

  • 功能扩展 - 支持线程池任务传递上下文;项目关闭时,支持等待线程池在指定时间内完成任务。

  • 多种模式 - 内置两种使用模式:依赖配置中心无中间件依赖

  • 容器管理 - Tomcat、Jetty、Undertow 容器线程池运行时查看和线程数变更。

  • 框架适配 - Dubbo、Hystrix、RabbitMQ、RocketMQ 等消费线程池运行时数据查看和线程数变更。

  • 变更审核 - 提供多种用户角色,普通用户变更线程池参数需要 Admin 用户审核方可生效。

  • 动态化插件 - 内置多种线程池插件,支持用户自定义插件以及运行时扩展。

  • 多版本适配 - 经过实际测试,已支持客户端 SpringBoot 1.5.x => 2.7.5 版本(更高版本未测试)。

快速开始

对于本地演示目的,请参阅 Quick start

演示环境: http://console.hippo4j.cn/index.html

接入登记

更多接入的公司,欢迎在 登记地址 登记,登记仅仅为了产品推广。

联系我

扫码添加微信,备注:hippo4j,邀您加入群聊。若图片加载不出来,访问 官网站点

深入原理

如果您公司没有使用 Hippo4j 场景的话,我也建议去阅读下项目的底层原理,主要有以下几个原因:

  • 为了提高代码质量以及后续的扩展行为,运用多种设计模式实现高内聚、低耦合。

  • 框架底层依赖 Spring 框架运行,并在源码中大量使用 Spring 相关功能。

  • 运用 JUC 并发包下多种工具保障多线程运行安全,通过实际场景理解并发编程。

  • 借鉴主流开源框架 Nacos、Eureka 实现轻量级配置中心和注册中心功能。

  • 自定义 RPC 框架实现,封装 Netty 完成客户端/服务端网络通信优化。

  • 通过 CheckStyle、Spotless 等插件规范代码编写,保障高质量代码行为和代码样式。

友情链接

  • [ Sa-Token ]:一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!

  • [ HertzBeat ]:易用友好的云监控系统, 无需 Agent, 强大自定义监控能力。

  • [ JavaGuide ]:一份涵盖大部分 Java 程序员所需要掌握的核心知识。

  • [ toBeBetterJavaer ]:一份通俗易懂、风趣幽默的 Java 学习指南。

  • [ Jpom ]:简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件。

刚果商城

👉 工作经验不满五年程序员,如何通过项目提高个人技术能力?

image

贡献者

感谢所有为项目作出贡献的开发者。如果有意贡献,参考 good first issue

鸣谢

Hippo4j 社区收到 Jetbrains 多份 Licenses,并已分配项目 活跃开发者,非常感谢 Jetbrains 对开源社区的支持。

JetBrains Logo (Main) logo

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].