handshake (Release It!) pattern
Before sending real work, ask the server 'are you ready to receive?' and let it say no if it's overloaded. Lets the server reject load before paying its cost rather than crashing under it. Common in messaging protocols, rare in HTTP — which is why HTTP services need other admission control.
Before sending real work, ask the server 'are you ready to receive?' and let it say no if it's overloaded. Lets the server reject load before paying its cost rather than crashing under it. Common in messaging protocols, rare in HTTP — which is why HTTP services need other admission control.
symptoms
- server crashing under traffic it could have rejected
- clients sending real work to dying servers
causes
- no ready signal in protocol
- load balancer routes regardless of instance health
fixes
- explicit ready endpoint client checks first
- load balancer respects readiness
- circuit breakers as poor-mans handshake
you might say
- handshake
- ready/not-ready