resilience

4 posts

Votre boucle de retry part du principe que la première requête a échoué. Ce n'est probablement pas le cas.

Un timeout ou un crash ne signifie pas que votre requête API a été perdue. Voici comment les clés d'idempotence rendent les retries sûrs, et le pattern de stockage qui empêche réellement les doublons.

Votre service plante au milieu d'une requête . Le client voit un timeout et retry. Vous avez maintenant deux charges. Le client est en colère. La base de…

Un verrou qui survit à votre processus : comment fonctionnent réellement les leases distribués

Les mutex en mémoire disparaissent lors du redémarrage de votre serveur. Voici comment les leases distribués avec des jetons de clôture (fencing tokens) et des TTLs empêchent le travail en double lors des crashs, et où ils échouent encore.

Votre ne survit pas à un . Il ne survit pas à un OOM, à un déploiement progressif, ni à un redémarrage de nœud. À l'instant où le processus se termine, le…

Un circuit breaker sans goroutines, sans timers et sans overhead d'arrière-plan

La plupart des bibliothèques de circuit breaker lancent des threads d'arrière-plan pour tester la récupération. Vous n'en avez pas besoin. Voici une conception pilotée par les requêtes qui élimine tout l'overhead d'arrière-plan sans sacrifier la correction.

Chaque circuit breaker en production que j'ai examiné finit par lancer un thread d'arrière-plan. Il peut s'agir d'une goroutine Go, d'un Java, ou d'une tâche…

Votre service web a un chemin d'arrêt gracieux. C'est le bug.

Les logiciels crash-only traitent chaque échec comme un crash et chaque démarrage comme une récupération. Pour les services web, cela signifie supprimer votre logique d'arrêt et concevoir un état qui survit à un kill -9.

Votre service web a un shutdown handler. Il vide les buffers, ferme les connexions, écrit des checkpoints. Vous l'avez testé une fois, peut-être. En…