C# Academy · Pelajaran

Pola Pemutus Sirkuit

Hentikan sementara pemanggilan layanan yang gagal.

Pelajaran 2 dari 413 langkah

Pola Pemutus Sirkuit adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Masalah yang Tidak Dapat Diatasi oleh Percobaan Ulang

Jika dependensi benar-benar tidak aktif, mengulangi setiap permintaan hanya menambah beban dan memperlambat aplikasi Anda sendiri. Pola pemutus sirkuit mendeteksi kegagalan yang terus-menerus dan berhenti memanggil layanan yang gagal selama beberapa waktu.

Terinspirasi oleh Elektronika

Seperti pemutus listrik yang terlepas untuk melindungi suatu sirkuit, pola ini "membuka sirkuit" setelah terlalu banyak kegagalan, lalu otomatis menguji apakah dependensi telah pulih.

Tiga Keadaan

Pemutus sirkuit memiliki tiga keadaan: Tertutup (panggilan berjalan normal), Terbuka (panggilan langsung diblokir), dan Setengah Terbuka (panggilan percobaan menguji pemulihan).

Keadaan Tertutup

Dalam keadaan Tertutup, permintaan diteruskan dan Polly melacak tingkat kegagalan. Jika kegagalan melampaui ambang batas dalam jendela pengambilan sampel, pemutus berpindah ke keadaan Terbuka.

Keadaan Terbuka

Dalam keadaan Terbuka, Polly memutus panggilan secara langsung: Polly segera melempar BrokenCircuitException tanpa memanggil dependensi, sehingga dependensi memiliki kesempatan untuk pulih dan pemanggil dapat segera menerima kegagalan.

try
{
    await pipeline.ExecuteAsync(token => CallServiceAsync(token));
}
catch (BrokenCircuitException)
{
    // circuit is open, fail fast
}

Keadaan Setengah Terbuka

Setelah durasi pemutusan berakhir, pemutus memasuki keadaan Setengah Terbuka dan mengizinkan satu permintaan percobaan. Keberhasilan menutup sirkuit, sedangkan kegagalan membukanya kembali untuk periode pemutusan berikutnya.

Mengonfigurasi Pemutus Sirkuit

Polly v8 menggunakan CircuitBreakerStrategyOptions. Pengaturan utama meliputi: FailureRatio (misalnya 0.5 = 50%), MinimumThroughput, SamplingDuration, dan BreakDuration.

using Polly.CircuitBreaker;

var pipeline = new ResiliencePipelineBuilder()
    .AddCircuitBreaker(new CircuitBreakerStrategyOptions
    {
        FailureRatio = 0.5,
        MinimumThroughput = 10,
        SamplingDuration = TimeSpan.FromSeconds(30),
        BreakDuration = TimeSpan.FromSeconds(15)
    })
    .Build();

FailureRatio dan MinimumThroughput

FailureRatio adalah proporsi kegagalan yang memicu pemutus. MinimumThroughput memastikan pemutus hanya terpicu setelah jumlah panggilan yang memadai, sehingga satu kegagalan awal tidak membukanya terlalu cepat.

Merespons Perubahan Keadaan

Gunakan panggilan balik OnOpened, OnClosed, dan OnHalfOpened untuk mencatat perubahan atau memunculkan peringatan ketika dependensi menurun kinerjanya.

new CircuitBreakerStrategyOptions
{
    FailureRatio = 0.5,
    OnOpened = args =>
    {
        Console.WriteLine($"Circuit opened for {args.BreakDuration}");
        return default;
    }
};

Menggabungkan dengan Percobaan Ulang

Percobaan ulang dan pemutus sirkuit saling melengkapi: percobaan ulang menangani gangguan singkat, sedangkan pemutus berhenti melakukan percobaan ulang setelah kegagalan berlangsung terus-menerus. Urutan sangat penting dan akan dibahas kembali dalam pelajaran tentang alur ketahanan.

Kendali Manual

Anda dapat menggunakan CircuitBreakerManualControl untuk mengisolasi (memaksa keadaan terbuka) atau menutup pemutus secara manual, yang berguna selama jendela pemeliharaan.

var manualControl = new CircuitBreakerManualControl();
await manualControl.IsolateAsync(); // force open
await manualControl.CloseAsync();   // force closed

Pemeriksaan Singkat

Uji pola pemutus sirkuit.

Rangkuman

Pemutus sirkuit melindungi dependensi yang bermasalah dengan berpindah antara keadaan Tertutup, Terbuka, dan Setengah Terbuka. Di Polly v8, AddCircuitBreaker dengan FailureRatio, MinimumThroughput, SamplingDuration, dan BreakDuration mengendalikan pemicuan pemutus. Keadaan Terbuka melempar BrokenCircuitException agar kegagalan terjadi dengan cepat, sedangkan panggilan balik dan kendali manual memungkinkan Anda mengamati serta mengubah keadaan.

Gratis untuk memulai

Belajar C# 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
93
Pelajaran
346

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Pemutus Sirkuit” gratis?

Ya — teks lengkap “Pola Pemutus Sirkuit” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pola Pemutus Sirkuit”?

Hentikan sementara pemanggilan layanan yang gagal. Kamu berlatih C# Academy 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 C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy 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 2 dari 4.

Berapa lama pelajaran “Pola Pemutus Sirkuit” 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 C# Academy ini?

Ya. Setiap pelajaran C# Academy 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

  1. Kebijakan Percobaan Ulang
  2. Pola Pemutus Sirkuit
  3. Kebijakan Batas Waktu dan Cadangan
  4. Alur Ketahanan
← Kembali ke C# Academy