Contrôle de pression et régulation de charge
Maintenez la stabilité des systèmes en surcharge grâce au contrôle de pression, à la limitation du débit et aux mécanismes de réduction de charge fondés sur les primitives OTP.
Contrôle de pression et régulation de charge est une leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Erlang OTP: Distributed & Fault-Tolerant Systems Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
What Is Backpressure?
When work arrives faster than a system can process it, queues grow and latency explodes. Backpressure is the practice of signalling producers to slow down so the system stays stable instead of melting down.
The Unbounded Queue Problem
An async gen_server:cast never blocks the caller, so its mailbox can grow without limit under load — the system runs out of memory before it ever rejects work.
Synchronous Calls as Backpressure
Using gen_server:call instead of cast makes the caller wait until the server is ready, naturally throttling producers to the server speed.
Reply = gen_server:call(worker, {process, Job}, 5000).Bounded Queues
Maintain an explicit counter of in-flight work and reject or block new requests once a limit is reached, rather than letting the mailbox grow.
handle_call({job, J}, _From, #{n := N} = S) when N < 100 ->
{reply, ok, S#{n := N + 1}};
handle_call({job, _}, _From, S) ->
{reply, {error, overloaded}, S}.Load Shedding
Under extreme load, the best move can be to shed low-priority work fast — returning an error immediately — to protect the system for high-priority requests.
Rate Limiting with Tokens
A token-bucket limiter grants a fixed number of permits per interval; requests beyond that wait or fail. This caps throughput predictably.
case take_token(Bucket) of
ok -> do_work();
empty -> {error, rate_limited}
end.Measuring Pressure
The mailbox length of a bottleneck process is a live pressure gauge. Monitor it and trigger shedding before it grows dangerous.
process_info(Worker, message_queue_len).Pooling for Throughput
A pool of worker processes (e.g. via poolboy) bounds concurrency: requests queue for a free worker, giving natural backpressure with controlled parallelism.
Circuit Breakers
When a downstream dependency is failing, a circuit breaker opens to stop sending requests for a cooldown period, preventing pileups and giving the dependency time to recover.
Timeouts as Protection
Always give gen_server:call a finite timeout. An unbounded wait lets a stuck server block callers indefinitely; a timeout converts a hang into a fast, recoverable error.
case catch gen_server:call(srv, req, 2000) of
{ok, R} -> R;
_ -> {error, busy}
end.Choosing a Strategy
Combine patterns: synchronous calls for natural throttling, bounded queues to cap memory, rate limiting for fairness, and load shedding plus circuit breakers as last-resort protection.
Quick Check
Test your load regulation knowledge.
Recap
You learned to keep systems stable under overload:
- Backpressure signals producers to slow down
- Synchronous
callthrottles naturally; bounded queues cap memory - Rate limiting enforces fairness; load shedding protects priority work
- Worker pools bound concurrency; circuit breakers stop downstream pileups
- Monitor mailbox length as a live pressure gauge
Apprends Erlang avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 12
- Leçons
- 48
Questions Fréquemment Posées
La leçon « Contrôle de pression et régulation de charge » est-elle gratuite ?
Oui — le texte complet de « Contrôle de pression et régulation de charge » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming, passe à CoddyKit PRO. Le cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Contrôle de pression et régulation de charge » ?
Maintenez la stabilité des systèmes en surcharge grâce au contrôle de pression, à la limitation du débit et aux mécanismes de réduction de charge fondés sur les primitives OTP. Tu pratiques Erlang OTP: Distributed & Fault-Tolerant Systems Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Erlang OTP: Distributed & Fault-Tolerant Systems Programming ?
Aucune expérience préalable n'est requise. Erlang OTP: Distributed & Fault-Tolerant Systems Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Contrôle de pression et régulation de charge » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming ?
Oui. Chaque leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Conception pour une haute disponibilité
- Schémas de consensus distribué
- Études de cas sur Erlang OTP
- Contrôle de pression et régulation de charge