Heimdall - An enhanced HTTP client for Go

  •        755

Heimdall is an HTTP client that helps your application make a large number of requests, at scale. With Heimdall, you can use a hystrix-like circuit breaker to control failing requests, Add synchronous in-memory retries to each request, with the option of setting your own retrier strategy, Create clients with different timeouts for every request.

http://gojek.tech
https://github.com/gojektech/heimdall

Tags
Implementation
License
Platform

   




Related Projects

heimdall - An enhanced HTTP client for Go

  •    Go

All HTTP methods are exposed as a fluent interface. This package can be used by adding the following import statement to your .go files.

cockatiel - A resilience and transient-fault-handling library that allows developers to express policies such as Backoff, Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback

  •    TypeScript

I recommend reading the Polly wiki for more information for details and mechanics around the patterns we provide. There are two events, onSuccess/onFailure, that are called when a call succeeds or fails. Note that onFailure only is called if a handled error is thrown.

backoff - The exponential backoff algorithm in Go (Golang).

  •    Go

This is a Go port of the exponential backoff algorithm from Google's HTTP Client Library for Java. Exponential backoff is an algorithm that uses feedback to multiplicatively decrease the rate of some process, in order to gradually find an acceptable rate. The retries exponentially increase and stop increasing when a certain threshold is met.

Hystrix - Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable

  •    Java

Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.See the Wiki for full documentation, examples, operational details and other information.

pg - PostgreSQL ORM for Golang with focus on PostgreSQL features and performance

  •    Go

PostgreSQL ORM for Golang with focus on PostgreSQL features and performance. It supports Basic types, Multidimensional Arrays, Transactions, Prepared statements, Queries retries on network errors, Automatic connection pooling with circuit breaker support, Bulk/batch inserts and updates, Pagination and URL filters helpers, Migrations, Sharding and lot more.


circuitbreaker - Circuit Breakers in Go

  •    Go

Circuitbreaker provides an easy way to use the Circuit Breaker pattern in a Go program.Circuit breakers are typically used when your program makes remote calls. Remote calls can often hang for a while before they time out. If your application makes a lot of these requests, many resources can be tied up waiting for these time outs to occur. A circuit breaker wraps these remote calls and will trip after a defined amount of failures or time outs occur. When a circuit breaker is tripped any future calls will avoid making the remote call and return an error to the caller. In the meantime, the circuit breaker will periodically allow some calls to be tried again and will close the circuit if those are successful.

VoltDB - Fast Scalable SQL DBMS with ACID

  •    Java

VoltDB was specifically designed for contemporary software applications that are pushed beyond their limits by high volume data sources. VoltDB provides the ability to capture, store and process incoming data at millions of read/write operations per second. And VoltDB’s relational model opens that data to be analyzed in real-time, using familiar Business Intelligence tools, to identify data patterns and trends, spot anomalies, or perform tracking and alerting.

hystrix-go - Netflix's Hystrix latency and fault tolerance library, for Go

  •    Go

Hystrix is a great project from Netflix.Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.

hyperf - 🚀 A coroutine framework that focuses on hyperspeed and flexibility

  •    PHP

Hyperf is an extremely performant and flexible PHP CLI framework based on Swoole 4.5+, powered by the state-of-the-art coroutine server and a large number of battle-tested components. Aside from the decisive benchmark outmatching against PHP-FPM frameworks, Hyperf also distinct itself by its focus on flexibility and composability. Hyperf ships with an AOP-enabling dependency injector to ensure components and classes are pluggable and meta programmable. All of its core components strictly follow the PSR standards and thus can be used in other frameworks. Hyperf's architecture is built upon the combination of Coroutine, Dependency injection, Events, Annotation, AOP (aspect-oriented programming). Core components provided by Hyperf can be used out of the box in coroutine context. The set includes but not limited to: MySQL coroutine client, Redis coroutine client, WebSocket server and client, JSON RPC server and client, gRPC server and client, Zipkin/Jaeger (OpenTracing) client, Guzzle HTTP client, Elasticsearch client, Consul client, ETCD client, AMQP component, Apollo configuration center, Aliyun ACM, ETCD configuration center, Token bucket algorithm-based limiter, Universal connection pool, Circuit breaker, Swagger, Swoole Tracker, Snowflake, Simply Redis MQ, RabbitMQ, NSQ, Nats, Seconds level crontab, Custom Processes, etc. Be assured Hyperf is still a PHP framework. You will also find familiar packages such as Middleware, Event Manager, Coroutine optimized Eloquent ORM (And Model Cache!), Translation, Validation, View engine (Blade/Smarty/Twig/Plates/ThinkTemplate) and more at your command.

Resilience4j - Fault tolerance library designed for Java8 and functional programming

  •    Java

Resilience4j is a lightweight fault tolerance library inspired by Netflix Hystrix, but designed for Java 8 and functional programming. Resilience4j provides higher-order functions (decorators) to enhance any functional interface, lambda expression or method reference with a Circuit Breaker, Rate Limiter, Retry or Bulkhead. You can stack more than one decorator on any functional interface, lambda expression or method reference. The advantage is that you have the choice to select the decorators you need and nothing else.

Polly - Polly is a

  •    CSharp

Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner.Polly targets .NET 4.0, .NET 4.5 and .NET Standard 1.1 (coverage: .NET Core, Mono, Xamarin.iOS, Xamarin.Android, UWP, WP8.1+).

guard - NOT MAINTAINED! A generic high performance circuit breaker & proxy server written in Go

  •    Go

NOT MAINTAINED! A generic high performance circuit breaker & proxy server written in Go

go-circuitbreaker - A context aware circuit breaker library in Go.

  •    Go

go-circuitbreaker is a Circuit Breaker pattern implementation in Go. Wrapping your code block with Do() protects your process with Circuit Breaker.

OrangeFS - Scale-out Network File System

  •    C

OrangeFS is a scale-out network file system designed for use on high-end computing (HEC) systems that provides very high-performance access to multi-server-based disk storage, in parallel. The OrangeFS server and client are user-level code, making them very easy to install and manage. OrangeFS has optimized MPI-IO support for parallel and distributed applications, and it is leveraged in production installations and used as a research platform for distributed and parallel storage.

lyra - High availability RabbitMQ client

  •    Java

Dealing with failure is a fact of life in distributed systems. Lyra is a RabbitMQ client that embraces failure, helping you achieve high availability in your services by automatically recovering AMQP resources when unexpected failures occur. Lyra also supports automatic invocation retries, recovery related eventing, and exposes a simple, lightweight API built around the RabbitMQ Java client library.Please note that Lyra and RabbitMQ Java client's recovery feature are mutually exclusive and must not be used together. Note that RabbitMQ Java client 4.0 and later versions have automatic connection recovery enabled by default.

Heimdall

  •    Java

Heimdall is a Java content validation framework that addresses checking of data in distributed software systems. Developers are encouraged to identify potentially untrustworthy data sources, and specify validation rules in XML.

service-fabric - Service Fabric is a distributed systems platform for packaging, deploying, and managing stateless and stateful distributed applications and containers at large scale

  •    C++

Service Fabric is a distributed systems platform for packaging, deploying, and managing stateless and stateful distributed applications and containers at large scale. Service Fabric runs on Windows and Linux, on any cloud, any datacenter, across geographic regions, or on your laptop. Learn about Service Fabric's Core Subsystems, mapped to this repo's folder structure.

Ganglia - scalable distributed monitoring system

  •    C

Ganglia is a scalable distributed monitoring system for high-performance computing systems such as clusters and Grids. It is based on a hierarchical design targeted at federations of clusters. It leverages widely used technologies such as XML for data representation, XDR for compact, portable data transport, and RRDtool for data storage and visualization.

brooklin - An extensible distributed system for reliable nearline data streaming at scale

  •    Java

Brooklin is a distributed system intended for streaming data between various heterogeneous source and destination systems with high reliability and throughput at scale. Designed for multitenancy, Brooklin can simultaneously power hundreds of data pipelines across different systems and can easily be extended to support new sources and destinations. Brooklin offers a flexible API that can be extended to support a wide variety of source and destination systems. It is not confined to single type of source or destination system.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.