Distributed Systems need to be able to gracefully handle failures and recover from them. This is achieved through resilience, which involves designing systems while anticipating scenarios where nodes/services/resources over which the system is distributed may fail to be accessed or behave unexpected due to
Slow Networks
Network Timeouts
Overcommited/Overloaded resources or Services
Temporarily unavailable resources or service
Partial loss of connectivity
Patterns
This repository covers several patterns implemented in Golang which have been designed to handle resilience in distributed environments.