รูปแบบตัวตัดวงจร
หยุดเรียกบริการที่ล้มเหลวชั่วคราว
รูปแบบตัวตัดวงจร เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นโยบายการลองใหม่
- รูปแบบตัวตัดวงจร
- นโยบายหมดเวลาและค่าทดแทน
- ไปป์ไลน์ความทนทาน