0Pricing
C# Academy · บทเรียน

รูปแบบตัวตัดวงจร

หยุดเรียกบริการที่ล้มเหลวชั่วคราว

รูปแบบตัวตัดวงจร เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาที่การลองใหม่แก้ไม่ได้

หากการพึ่งพาหยุดทำงานจริง ๆ การลองใหม่กับทุกคำขอมีแต่จะเพิ่มภาระและทำให้แอปพลิเคชันของคุณช้าลง รูปแบบ ตัวตัดวงจรจะตรวจจับความล้มเหลวที่เกิดขึ้นต่อเนื่อง และหยุดเรียกบริการที่ล้มเหลวไว้ชั่วระยะหนึ่ง

แนวคิดจากอุปกรณ์อิเล็กทรอนิกส์

เช่นเดียวกับเบรกเกอร์ไฟฟ้าที่ตัดการทำงานเพื่อป้องกันวงจร รูปแบบนี้จะ "ตัดวงจรเป็นสถานะเปิด" หลังเกิดความล้มเหลวมากเกินไป จากนั้นจะทดสอบโดยอัตโนมัติว่าการพึ่งพากลับมาทำงานแล้วหรือไม่

สามสถานะ

ตัวตัดวงจรมีสามสถานะ ได้แก่ ปิด (การเรียกทำงานตามปกติ) เปิด (บล็อกการเรียกทันที) และ กึ่งเปิด (ใช้การเรียกเพื่อทดสอบการกู้คืน)

สถานะปิด

ในสถานะ ปิด คำขอจะผ่านไปตามปกติ และ Polly จะติดตามอัตราความล้มเหลว หากความล้มเหลวเกินเกณฑ์ภายในช่วงเวลาการสุ่มตัวอย่าง ตัวตัดวงจรจะเปลี่ยนเป็นสถานะเปิด

สถานะเปิด

ในสถานะ เปิด Polly จะตัดการเรียกตั้งแต่ต้น โดยส่ง BrokenCircuitException ออกมาทันทีโดยไม่เรียกการพึ่งพา ทำให้การพึ่งพามีโอกาสกู้คืน และผู้เรียกได้รับความล้มเหลวอย่างรวดเร็ว

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

สถานะกึ่งเปิด

เมื่อพ้นระยะเวลาที่ตัดวงจรแล้ว ตัวตัดวงจรจะเข้าสู่สถานะ กึ่งเปิด และอนุญาตให้มีคำขอทดสอบหนึ่งครั้ง หากสำเร็จ วงจรจะปิด หากล้มเหลว วงจรจะเปิดอีกครั้งเป็นช่วงเวลาการตัดวงจรระยะใหม่

การกำหนดค่าตัวตัดวงจร

Polly v8 ใช้ CircuitBreakerStrategyOptions การตั้งค่าที่สำคัญ ได้แก่ FailureRatio เช่น 0.5 = 50%, MinimumThroughput, SamplingDuration และ 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 และ MinimumThroughput

FailureRatio คือสัดส่วนความล้มเหลวที่ทำให้ตัวตัดวงจรทำงาน ส่วน MinimumThroughput ช่วยให้ตัวตัดวงจรทำงานต่อเมื่อมีการเรียกมากเพียงพอเท่านั้น เพื่อไม่ให้ความล้มเหลวในช่วงแรกเพียงครั้งเดียวเปิดวงจรก่อนเวลาอันควร

ตอบสนองต่อการเปลี่ยนสถานะ

ใช้โคลแบ็ก OnOpened, OnClosed และ OnHalfOpened เพื่อบันทึกข้อมูลการทำงานของการเปลี่ยนสถานะหรือส่งการแจ้งเตือนเมื่อการพึ่งพาเริ่มมีประสิทธิภาพลดลง

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

ทำงานร่วมกับการลองใหม่

การลองใหม่และตัวตัดวงจรช่วยเสริมกัน การลองใหม่จัดการปัญหาชั่วขณะ ส่วนตัวตัดวงจรจะหยุดการลองใหม่เมื่อความล้มเหลวเกิดขึ้นต่อเนื่อง ลำดับมีความสำคัญ ซึ่งเราจะกลับมาทบทวนอีกครั้งในบทเรียนเกี่ยวกับ pipeline

การควบคุมด้วยตนเอง

คุณสามารถเก็บ CircuitBreakerManualControl ไว้เพื่อแยกวงจร (บังคับให้เปิด) หรือปิดตัวตัดวงจรด้วยตนเอง ซึ่งมีประโยชน์ในช่วงเวลาบำรุงรักษา

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

ตรวจสอบอย่างรวดเร็ว

ทดสอบรูปแบบตัวตัดวงจร

สรุป

ตัวตัดวงจรช่วยปกป้องการพึ่งพาที่กำลังมีปัญหา ด้วยการเปลี่ยนระหว่างสถานะ ปิด เปิด และ กึ่งเปิด ใน Polly v8 AddCircuitBreaker ร่วมกับ FailureRatio, MinimumThroughput, SamplingDuration และ BreakDuration จะควบคุมการตัดวงจร สถานะเปิดจะส่ง BrokenCircuitException เพื่อให้ล้มเหลวอย่างรวดเร็ว และโคลแบ็กกับการควบคุมด้วยตนเองช่วยให้คุณติดตามและแทนที่สถานะได้

คำถามที่พบบ่อย

บทเรียน “รูปแบบตัวตัดวงจร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “รูปแบบตัวตัดวงจร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบตัวตัดวงจร”

หยุดเรียกบริการที่ล้มเหลวชั่วคราว คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “รูปแบบตัวตัดวงจร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. นโยบายการลองใหม่
  2. รูปแบบตัวตัดวงจร
  3. นโยบายหมดเวลาและค่าทดแทน
  4. ไปป์ไลน์ความทนทาน
← กลับไปที่ C# Academy