ข้ามไปยังเนื้อหาหลัก

การปิดระบบอย่างนุ่มนวล

Glasswall Halo ใช้งาน graceful shutdown เพื่อให้บริการสามารถดำเนินการตามคำขอที่กำลังประมวลผลอยู่ให้เสร็จสิ้นได้ ขณะเดียวกันก็ปฏิเสธคำขอใหม่ระหว่างกระบวนการปิดระบบ

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

Synchronous API และ Asynchronous API

Glasswall Halo APIs ใช้กลไก graceful shutdown ของ ASP.NET Core ดูข้อมูลเพิ่มเติมได้ในเอกสาร Microsoftเกี่ยวกับ Kestrel shutdown timeout

โดยค่าเริ่มต้น shutdown timeout ถูกตั้งค่าเป็น 60 วินาที ค่านี้กำหนดว่าเซิร์ฟเวอร์จะรอนานเท่าใดหลังจากเริ่มการปิดระบบ ก่อนที่จะปิดการเชื่อมต่อที่ยังเปิดอยู่แบบบังคับ

ในช่วงเวลานี้:

  • Kestrel จะรอให้การประมวลผลคำขอที่กำลังทำงานอยู่เสร็จสิ้น
  • จะไม่รับการเชื่อมต่อหรือคำขอใหม่

เป็นไปได้ที่งานเบื้องหลังบางอย่างจะยังคงทำงานต่อหลังจาก shutdown timeout ผ่านไปแล้ว พฤติกรรมนี้อธิบายไว้ในเอกสาร Microsoftเกี่ยวกับการจัดการการหยุดของ hosted services

แม้หลังจากมีการร้องขอให้ยกเลิกแล้ว งานต่าง ๆ จะไม่ถูกละทิ้ง host จะรอให้งานทั้งหมดเสร็จสิ้นก่อนการยุติขั้นสุดท้าย

บริการ Report Aggregator และ Engine

บริการ Report Aggregator และ Engine ถูกนำไปใช้เป็น hosted services ซึ่งช่วยให้สามารถรันตรรกะแบบกำหนดเองได้ระหว่างการเริ่มต้นและการปิดบริการ

ดูรายละเอียดเพิ่มเติมได้ใน เอกสาร Microsoft สำหรับ IHostedService

เมื่อเริ่มการปิดระบบ:

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

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