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 tình trạng 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 hạn chế các yêu cầu thử nghiệm đượ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 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​sốđúngThờ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​sốđúngThờ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​sốđúngSố lượng cuộc gọi tối thiểu cần 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​sốđúngSố 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​sốsaiGhi đè 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​chuỗisaiGhi đè 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​chuỗisaiGhi đè 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​chuỗiđúngJSON đã được chuyển đổi thành chuỗi để ngăn chặn việc 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 pathchuỗisaiMộ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 của Circuit Breaker

Circuit Breaker hoạt động dựa trên một chu kỳ phát hiện lỗi và chuyển 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: Bị 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 vượt qua mà không gặp vấn đề gì, hệ thống sẽ trở lại trạng thá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
Số yêu cầu tối thiểuSố lượng yêu cầu tối thiểu trong khoảng thời gian đơn vị để 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ó sẽ được coi là một thất bạ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ở.
Số yêu cầu tối thiểu trong 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.
Số yêu cầu tối đa trong nửa mởSố lượng yêu cầu thử nghiệm tối đa để đánh giá khả năng 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à bộ ngắt mạch 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 bộ ngắt mạch đượ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.