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
This repository covers several patterns implemented in Golang which have been designed to handle resilience in distributed environments.