An efficient and feature-complete Go implementation of the circuit breaker pattern, inspired by Netflix Hystrix.
Circuit is a Go library that implements the circuit breaker pattern, providing a robust mechanism to prevent cascading failures in distributed systems. It offers a comprehensive feature set comparable to Netflix Hystrix, enabling developers to build resilient applications by isolating failures and managing dependencies effectively.
Go developers building resilient microservices and distributed systems who need to protect against downstream service failures and manage dependencies. It is particularly suited for teams requiring Hystrix compatibility or advanced features like SLO tracking and live configuration updates.
Developers choose Circuit for its efficient implementation with low memory allocation and high performance, benchmarked as superior to alternatives like go-hystrix. Its unique selling points include full Hystrix dashboard compatibility, integrated metrics for Prometheus and expvar, and advanced features like SLO tracking and panic recovery.
An efficient and feature complete Hystrix like Go implementation of the circuit breaker pattern.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Outperforms alternatives like go-hystrix in benchmarks, with minimal configurations achieving zero memory allocation and nanosecond-level latency, as shown in the provided benchmark results.
Fully supports Netflix Hystrix dashboards and configuration patterns, enabling seamless integration with existing monitoring ecosystems, demonstrated in the MetricEventStream example.
Includes built-in metrics for Prometheus and expvar, plus unique SLO tracking for formal response time health monitoring, going beyond basic circuit states.
Allows live changes to circuit parameters without restarts, adapting dynamically to production conditions, as illustrated in the Hystrix configuration runtime update example.
Setting up advanced features like Hystrix logic or SLO tracking requires multiple steps and deep understanding, as seen in the detailed examples, which can be daunting for newcomers.
The existence of UPGRADE_GUIDE.md for major version jumps (e.g., v3 to v4) indicates that upgrades may require non-trivial migration efforts and code adjustments.
The README notes that godoc examples are more up-to-date, leading to a split between primary documentation and actual usage, potentially causing confusion.