Chuyển đến nội dung chính

Tắt mềm

Glasswall Halo triển khai graceful shutdown để cho phép các dịch vụ hoàn tất các yêu cầu đang được xử lý đồng thời từ chối các yêu cầu mới trong quá trình tắt.

Điều này đảm bảo rằng công việc còn tồn đọng được xử lý đúng cách và giảm nguy cơ mất dữ liệu hoặc các yêu cầu chỉ được xử lý một phần.

API đồng bộ và API bất đồng bộ

Các API của Glasswall Halo sử dụng cơ chế graceful shutdown của ASP.NET Core. Thông tin thêm có trong tài liệu Microsoft về thời gian chờ tắt Kestrel.

Theo mặc định, thời gian chờ tắt được đặt là 60 giây. Giá trị này xác định máy chủ sẽ chờ bao lâu sau khi quá trình tắt bắt đầu trước khi các kết nối đang mở bị đóng cưỡng bức.

Trong khoảng thời gian này:

  • Kestrel chờ quá trình xử lý các yêu cầu đang hoạt động hoàn tất.
  • Không chấp nhận kết nối hoặc yêu cầu mới.

Một số tác vụ nền có thể vẫn tiếp tục chạy sau khi thời gian chờ tắt đã hết. Hành vi này được mô tả trong tài liệu Microsoft về xử lý dừng hosted services.

Ngay cả sau khi đã yêu cầu hủy, các tác vụ cũng không bị bỏ dở. Host sẽ chờ tất cả tác vụ hoàn tất trước khi chấm dứt cuối cùng.

Dịch vụ Report Aggregator và Engine

Các dịch vụ Report AggregatorEngine được triển khai dưới dạng hosted services, cho phép thực thi logic tùy chỉnh trong quá trình khởi động và tắt dịch vụ.

Thông tin chi tiết hơn có trong tài liệu Microsoft về IHostedService.

Khi quá trình tắt bắt đầu:

  • Cả hai dịch vụ đều cho phép các yêu cầu đang xử lý hoàn tất.
  • Thời gian chờ tắt mặc định là 5 giây được áp dụng.
  • Nếu vượt quá thời gian chờ, dịch vụ sẽ bị chấm dứt cưỡng bức.

Thiết kế này bảo đảm hành vi tắt có thể dự đoán được, đồng thời cân bằng giữa độ tin cậy và tốc độ tắt.