Chuyển tới nội dung chính

Circuit Breaker

Tổng Quan

Chính sách Circuit Breaker được thiết kế để ngăn chặn các lỗi lan truyền trong kiến trúc microservices bằng cách theo dõi sức khỏe của các dịch vụ upstream và chặn các yêu cầu khi một dịch vụ trở nên không ổn định. Điều này đảm bảo sự ổn định của hệ thống, cải thiện trải nghiệm người dùng và phục hồi nhanh hơn từ các lỗi.

Circuit Breaker chuyển đổi giữa three states:

  • Closed: Các yêu cầu được xử lý bình thường.
  • Open: Các yêu cầu bị chặn do tỷ lệ lỗi cao.
  • Half-Open: Một số lượng yêu cầu thử nghiệm hạn chế được gửi để kiểm tra xem dịch vụ đã phục hồi hay chưa.

Chính sách này giúp prevent excessive retries, reduce latency, và ensure fault tolerance trong các hệ thống phân tán.

Chi Tiết Cấu Hình

Cấu Hình Trường

Chính sách Circuit Breaker cung cấp một số configurable parameters xác định khi nào và cách thức các yêu cầu bị chặn dựa trên các lỗi của hệ thống.

Field nameKeyTypeRequiredDescription
Thời gian đo lường lỗi (s)window_timenumber​true​Kích thước cửa sổ tính bằng giây​
Tỷ lệ lỗi (%)failure_percent_threshold​number​true​% của các yêu cầu mà nên thất bại để mở mạch​
Số lượng yêu cầu tối thiểu*min_calls_in_windownumber​true​Số lượng cuộc gọi tối thiểu phải có trong cửa sổ để bắt đầu tính toán​
Cài đặt thời gian chờ API (ms)api_call_timeout_ms​number​true​Thời gian chờ trước khi yêu cầu bị hết thời gian và được tính là lỗi​
Thời gian trạng thái mở (s)wait_duration_in_open_state​number​true​Thời gian (giây) để chờ trước khi tự động chuyển từ trạng thái mở sang trạng thái nửa mở​
Thời gian trạng thái nửa mở (s)wait_duration_in_half_open_state​number​true​Thời gian (giây) để chờ trong trạng thái nửa mở trước khi tự động chuyển sang trạng thái đóng​
Số lượng yêu cầu tối thiểu (min) trong trạng thái nửa mở*half_open_min_calls_in_window​number​true​Số lượng cuộc gọi tối thiểu phải có trong trạng thái nửa mở để bắt đầu tính toán​
Số lượng yêu cầu tối đa trong trạng thái nửa mở*half_open_max_calls_in_window​number​true​Số lượng cuộc gọi tối đa cho phép trong trạng thái nửa mở​
Đặt mã lỗi phản hồi*error_status_code​number​false​Ghi đè mã trạng thái phản hồi trong trường hợp có lỗi (circuit-breaker chặn yêu cầu)​
Đặt thông điệp lỗi phản hồi*error_msg_override​string​false​Ghi đè bằng thông điệp tùy chỉnh trong trường hợp có lỗi​
Đặt tiêu đề phản hồi*response_header_override​string​false​Ghi đè tiêu đề phản hồi "Content-Type" trong trường hợp có lỗi​
Đặt đường dẫn ngoại lệ*excluded_apis​string​true​JSON dạng chuỗi để ngăn không chạy circuit-breaker trên các API này​.
Có thể thêm hoặc xóa các đường dẫn bổ sung bằng cách nhấp vào nút cộng hoặc trừ trên mỗi đường dẫn.
Đường dẫn dự phòng hoạt độngfallback pathstringfalseMột đường dẫn dự phòng được định nghĩa để xử lý các yêu cầu khi dịch vụ chính không khả dụng.

Ghi Chú Bổ Sung Về Hành Vi Circuit Breaker

Circuit Breaker hoạt động dựa trên một chu kỳ phát hiện lỗi và chuyển đổi qua ba trạng thái:

  1. Closed: Trạng thái bình thường nơi lưu lượng truy cập đi qua và tỷ lệ lỗi được theo dõi.
  2. Open: Được kích hoạt khi ngưỡng tỷ lệ lỗi bị vượt qua, chặn tất cả lưu lượng truy cập đến tạm thời.
  3. Half-Open: Sau một khoảng thời gian đã cấu hình, lưu lượng hạn chế được cho phép để kiểm tra sự phục hồi của hệ thống.
  4. Recovery: Nếu lưu lượng thử nghiệm không gặp vấn đề, hệ thống trở lại bình thường (Đóng).

Mỗi cài đặt góp phần kiểm soát vòng đời này:

FieldDescription
Yêu cầu Tối thiểuSố lượng yêu cầu tối thiểu trong khoảng thời gian để bắt đầu đo lường lỗi.
Thời gian chờ APINếu một yêu cầu vượt quá ngưỡng này, nó được coi là một lỗi.
Thời gian trạng thái mởThời gian (tính bằng giây) mà mạch vẫn mở.
Thời gian nửa mởThời gian (tính bằng giây) mà mạch vẫn ở trạng thái nửa mở.
Yêu cầu tối thiểu trong trạng thái nửa mởLưu lượng tối thiểu cần thiết trong trạng thái nửa mở để bắt đầu quan sát tỷ lệ lỗi một lần nữa.
Yêu cầu tối đa trong trạng thái nửa mởSố lượng yêu cầu thử nghiệm tối đa để đánh giá sự phục hồi.

Tùy Chọn Cấu Hình Phản Hồi

  • Custom Error Code: Mã lỗi được trả về khi lưu lượng bị chặn.
  • Custom Error Message: Nội dung thông điệp được trả về khi lưu lượng bị chặn.
  • Custom Error Content-Type: Content-Type của phản hồi lỗi.

Cấu Hình Đường Dẫn Ngoại Lệ

Định nghĩa các đường dẫn cụ thể mà circuit breaker không nên được áp dụng.

ghi chú

Định dạng: PHƯƠNG THỨC + ĐƯỜNG DẪN

ví dụ: GET /example/v1

Cấu Hình Đường Dẫn Dự Phòng

Nếu circuit breaker được kích hoạt, các yêu cầu có thể được chuyển hướng đến một trang thay thế:

  • Đường dẫn dự phòng cho phép định nghĩa một lộ trình chuyển hướng tùy chỉnh cho các yêu cầu bị chặn.
  • Đường dẫn mặc định sẽ được sử dụng trừ khi một đường dẫn dự phòng được định nghĩa.
  • Để chuyển hướng đến một đường dẫn cụ thể trong cùng một API, hãy chỉ định ĐƯỜNG DẪN API mong muốn làm Đường dẫn Dự phòng.