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