Skip to content

SkipperQ/ElasticPool

Repository files navigation

ElasticPool: Lightweight Dynamic Thread Pool

License Java Version Memory Footprint

A production-ready thread pool implementation with dynamic tuning capabilities, optimized for modern Java applications. img.png

Why ElasticPool?

Problem: Static Pools in Dynamic Environments

Traditional thread pools require upfront configuration and lack runtime adaptability. Common issues include:

  • Over-provisioning (wasted resources)
  • Under-provisioning (queue overflows)
  • Blind operations (no real-time metrics)

Solution: Adaptive Resource Management

ElasticPool provides:

  • 🚀 Runtime reconfiguration via Redis pub/sub (150ms propagation)
  • 📊 Metric-driven decisions with essential observability dimensions
  • 🪶 Lightweight core (7MB class metadata, 48MB thread stacks)

Getting Started

1. Add Dependency

<dependency>
   <groupId>cn.skipperq</groupId>
   <artifactId>elastic-pool-spring-boot-starter</artifactId>
   <version>1.0.0</version>
</dependency>

2. Configure (application.yml)

elastic:
  pool:
    config:
      # state
      enabled: true
      # redis host
      host: 127.0.0.1
      # redis port
      port: 16379

Architechture

graph TD
    ApplicationService -->|Report Runtime Status| RedisConfigCenter
    AdminConsole -->|Read/Write Config Data| RedisConfigCenter
    RedisConfigCenter -->|Push Config Changes| ApplicationService
    AdminConsole -->|Invoke via HTTP API| ApplicationService
Loading

Performance Benchmarks

Test Environment:

  • Apple MacBook Air (M1/8-core CPU/16GB Unified Memory)
  • Middleware: Redis 7.2 (Docker container with 1GB memory limit)
Metric ElasticPool Fixed Pool Improvement
Avg Latency (p99) 82ms 147ms 44% ↓
Memory/Req 0.23KB 0.41KB 43% ↓
Config Update Time 150ms N/A -

Contributing

We welcome contributions in these areas:

  • ⚡ Performance optimization suggestions
  • 📈 Additional metric exporters
  • 📖 Documentation improvements

About

A Lightweight Dynamic Thread Pool Component

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages