# netflix/hystrix

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/netflix-hystrix).**

24,461 stars · 4,693 forks · Java

## Links

- GitHub: https://github.com/Netflix/Hystrix
- awesome-repositories: https://awesome-repositories.com/repository/netflix-hystrix.md

## Description

Hystrix is a latency and fault tolerance library designed to prevent cascading failures in distributed systems. It functions as a circuit breaker implementation that monitors failure thresholds and opens circuits to isolate remote calls when downstream services degrade.

The project distinguishes itself by providing multiple isolation mechanisms, utilizing dedicated thread pools and semaphores to ensure that latency in one dependency does not saturate the entire system. It also features a request collapsing and batching engine that groups concurrent calls into single executions to reduce the total load on downstream services.

Broad capabilities include the definition of fallback behavior for graceful degradation, request-scoped result caching, and reactive command execution through asynchronous data streams. The framework also provides real-time service health monitoring by streaming latency and error metrics to dashboards.

## Tags

### Networking & Communication

- [Circuit Breakers](https://awesome-repositories.com/f/networking-communication/traffic-management-gateways/circuit-breakers.md) — Implements circuit breakers that stop traffic to failing services to prevent cascading failures in distributed systems.

### Data & Databases

- [Request Batching](https://awesome-repositories.com/f/data-databases/request-batching.md) — Groups multiple concurrent calls into a single batch execution to reduce the total load on downstream systems.
- [Collapsing Batch Requests](https://awesome-repositories.com/f/data-databases/batch-processing/batch-matrix-multiplication-utilities/query-batching/api-call-batching/collapsing-batch-requests.md) — Runs multiple remote calls concurrently while caching identical requests and collapsing them into a single batch. ([source](https://github.com/netflix/hystrix#readme))
- [Request-Scoped Caching](https://awesome-repositories.com/f/data-databases/in-memory-caches/request-scoped-caching.md) — Stores remote call results per request context to prevent redundant network calls within a single request. ([source](https://github.com/netflix/hystrix#readme))

### Development Tools & Productivity

- [Dependency-Specific Thread Pools](https://awesome-repositories.com/f/development-tools-productivity/thread-pool-abstractions/dependency-specific-thread-pools.md) — Assigns each remote dependency to a dedicated thread pool to prevent latency in one service from saturating the system.
- [Semaphore-Based Isolation](https://awesome-repositories.com/f/development-tools-productivity/thread-pool-abstractions/semaphore-based-isolation.md) — Assigns commands to dedicated thread pools or semaphores to isolate dependency latency.
- [Parallel Provider Calls](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution/parallel-provider-calls.md) — Invokes multiple service providers simultaneously to reduce total response latency and improve throughput. ([source](https://github.com/netflix/hystrix#readme))

### Programming Languages & Runtimes

- [Dependency-Isolated](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/concurrency/task-orchestration-frameworks/thread-pools/dependency-isolated.md) — Uses dedicated thread pools to prevent latency in one dependency from saturating the entire system.

### Software Engineering & Architecture

- [Cascading Failure Preventions](https://awesome-repositories.com/f/software-engineering-architecture/cascading-failure-preventions.md) — Prevents cascading failures by isolating remote calls and providing fallback logic when downstream services fail.
- [Semaphore-Based Command Isolation](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-semaphores/semaphore-based-command-isolation.md) — Limits concurrent execution of non-network commands using semaphores to avoid thread management overhead.
- [Fault-Tolerant Fallbacks](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/fallback-value-logic/fault-tolerant-fallbacks.md) — Returns a default or stubbed response when a primary command fails, times out, or is rejected. ([source](https://github.com/Netflix/Hystrix/wiki/How-To-Use))
- [Service Call Fallbacks](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/fallback-value-logic/service-call-fallbacks.md) — Provides logic that returns default responses or alternative behaviors when a remote service call fails.
- [Fault Tolerance](https://awesome-repositories.com/f/software-engineering-architecture/fault-tolerance.md) — Wraps potentially failing remote calls in command objects to isolate latency and provide fallback logic. ([source](https://github.com/Netflix/Hystrix/wiki/Getting-Started))
- [Fault Tolerance Implementation](https://awesome-repositories.com/f/software-engineering-architecture/fault-tolerance-strategies/fault-tolerance-implementation.md) — Uses thread pools and semaphores to isolate dependencies, ensuring latency in one service does not saturate the system.
- [Command-Based Fault Isolation](https://awesome-repositories.com/f/software-engineering-architecture/fault-tolerance-strategies/fault-tolerance-implementation/command-based-fault-isolation.md) — Wraps potentially failing remote calls in command objects that isolate latency and handle timeouts gracefully.
- [Graceful Degradation](https://awesome-repositories.com/f/software-engineering-architecture/graceful-degradation.md) — Implements architectural patterns for ensuring system stability through graceful degradation and fallback logic during partial failures.
- [Request Batching](https://awesome-repositories.com/f/software-engineering-architecture/request-batching.md) — Combines multiple individual requests into a single execution to reduce the total number of remote calls. ([source](https://github.com/Netflix/Hystrix/wiki/How-To-Use))
- [Circuit Breaking States](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/circuit-breaking-states.md) — Manages service availability states like closed, open, and half-open based on failure rates to isolate failing services.
- [Asynchronous Command Execution](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-command-execution.md) — Queues dependency calls for asynchronous execution, returning a future to retrieve results without blocking the calling thread. ([source](https://github.com/Netflix/Hystrix/wiki/How-To-Use))
- [Non-Blocking Execution](https://awesome-repositories.com/f/software-engineering-architecture/client-server-architecture/long-running-task-protocols/non-blocking-execution.md) — Implements non-blocking execution patterns to handle long tasks without freezing the main execution thread. ([source](https://github.com/Netflix/Hystrix/blob/master/CHANGELOG.md))
- [Request Collapsing](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-synchronization-primitives/fiber-synchronization/promise-based/request-collapsing.md) — Ensures only one concurrent request fetches data for a missing key while others await the result. ([source](https://github.com/netflix/hystrix#readme))
- [Concurrency Optimizers](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-execution-managers/asynchronous-concurrency-managers/concurrency-optimizers.md) — Optimizes throughput by executing requests in parallel and collapsing concurrent calls into single batches. ([source](https://github.com/netflix/hystrix#readme))
- [Synchronous Command Execution](https://awesome-repositories.com/f/software-engineering-architecture/synchronous-command-execution.md) — Executes commands and blocks the calling thread until a result or exception is returned. ([source](https://github.com/Netflix/Hystrix/wiki/How-To-Use))

### Testing & Quality Assurance

- [Cascading Failure Prevention](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-isolation/service-isolation-utilities/failure-isolation-mechanisms/cascading-failure-prevention.md) — Prevents cascading failures using circuit breakers and isolation mechanisms to ensure graceful degradation when external services fail. ([source](https://github.com/netflix/hystrix#readme))

### DevOps & Infrastructure

- [Service Health Monitoring](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/operational-observability-access/service-health-monitoring.md) — Tracks and reports on the operational status and performance metrics of internal application services. ([source](https://github.com/netflix/hystrix#readme))

### System Administration & Monitoring

- [Metric Streaming](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/telemetry-collection-aggregation/metric-streaming.md) — Models performance data as a real-time stream for off-box aggregation without blocking execution threads. ([source](https://github.com/Netflix/Hystrix/blob/master/CHANGELOG.md))
- [Real-Time Monitoring Dashboards](https://awesome-repositories.com/f/system-administration-monitoring/real-time-monitoring-dashboards.md) — Streams latency, error rates, and circuit states to real-time dashboards to reflect system health. ([source](https://github.com/netflix/hystrix#readme))
- [Service Health Metrics Streaming](https://awesome-repositories.com/f/system-administration-monitoring/service-health-metrics-streaming.md) — Streams real-time latency and error metrics to dashboards for immediate visibility into distributed system health.
- [Service Health Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/service-health-monitoring.md) — Tracks operational status and health of internal services through streaming latency and error metrics.

### User Interface & Experience

- [Command Result Observables](https://awesome-repositories.com/f/user-interface-experience/visualization-frameworks/observable-based-reactive-frameworks/command-result-observables.md) — Exposes the results of wrapped remote calls as observables, allowing non-blocking asynchronous reactions to emitted values.

### Web Development

- [Reactive Stream Libraries](https://awesome-repositories.com/f/web-development/reactive-stream-libraries.md) — Wraps remote calls as asynchronous data streams to enable non-blocking reactions to values and errors.

### Part of an Awesome List

- [Distributed Applications](https://awesome-repositories.com/f/awesome-lists/devops/distributed-applications.md) — Library for latency and fault tolerance in remote systems.
