Pola Tekanan Balik & Pengaturan Beban
Jaga kestabilan sistem saat kelebihan beban menggunakan pola tekanan balik, pembatasan laju, dan pelepasan beban yang dibangun di atas primitif OTP.
Pola Tekanan Balik & Pengaturan Beban adalah pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Erlang OTP: Distributed & Fault-Tolerant Systems Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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
Belajar Erlang dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pola Tekanan Balik & Pengaturan Beban” gratis?
Ya — teks lengkap “Pola Tekanan Balik & Pengaturan Beban” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming, upgrade ke CoddyKit PRO. Kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pola Tekanan Balik & Pengaturan Beban”?
Jaga kestabilan sistem saat kelebihan beban menggunakan pola tekanan balik, pembatasan laju, dan pelepasan beban yang dibangun di atas primitif OTP. Kamu berlatih Erlang OTP: Distributed & Fault-Tolerant Systems Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Erlang OTP: Distributed & Fault-Tolerant Systems Programming?
Tidak diperlukan pengalaman sebelumnya. Erlang OTP: Distributed & Fault-Tolerant Systems Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Pola Tekanan Balik & Pengaturan Beban” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming ini?
Ya. Setiap pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Merancang Ketersediaan Tinggi
- Pola Konsensus Terdistribusi
- Studi Kasus Erlang OTP
- Pola Tekanan Balik & Pengaturan Beban