Giới thiệu

Xin chào, tôi là một kỹ sư backend đã làm việc với các API AI từ năm 2022. Hôm nay tôi muốn chia sẻ một vấn đề mà chắc hẳn nhiều bạn đã gặp phải: **API AI bị quá tải và ứng dụng của bạn treo cứng** khi dịch vụ bên ngoài gặp sự cố. Tôi đã từng mất 3 ngày để debug một lỗi "timeout" chỉ vì không implement circuit breaker (bộ ngắt mạch). Kể từ đó, tôi luôn đặt circuit breaker là **thành phần bắt buộc** trong mọi integration với API AI. Trong bài viết này, tôi sẽ hướng dẫn bạn từng bước, từ ý tưởng cơ bản đến code chạy được thực sự. > **HolySheep AI** cung cấp API AI tiêu chuẩn hóa với độ trễ trung bình **<50ms**, hỗ trợ thanh toán qua **WeChat/Alipay**, và tỷ giá **¥1=$1** giúp bạn tiết kiệm đến 85% chi phí. Đăng ký tại đây để nhận tín dụng miễn phí khi bắt đầu.

Circuit Breaker Là Gì? (Giải Thích Đơn Giản)

Hãy tưởng tượng bạn gọi điện cho một người bạn: 1. **Trạng thái CLOSED (Đóng)**: Bạn gọi bình thường, kết nối thành công 2. **Khi gặp lỗi**: Bạn gọi đi, điện thoại báo "máy bận" (timeout/error) 3. **Trạng thái OPEN (Mở)**: Sau nhiều lỗi, bạn nghĩ "thôi đợi một chút rồi gọi lại" 4. **Trạng thái HALF-OPEN (Nửa mở)**: Sau vài phút, bạn thử gọi lại xem bạn mình đã rảnh chưa 5. **Quay lại CLOSED**: Nếu thành công, mọi thứ trở lại bình thường Đó chính là ý tưởng của circuit breaker pattern!

Tại Sao Cần Circuit Breaker Cho API AI?

- **Ngăn chặn Cascade Failure**: Nếu API AI chậm hoặc lỗi, không để ảnh hưởng toàn bộ hệ thống - **Bảo vệ tài nguyên**: Không lãng phí bandwidth, CPU khi biết chắc sẽ thất bại - **Tự phục hồi**: Hệ thống tự "thử lại" sau khoảng thời gian nhất định - **Fallback nhanh**: Trả về kết quả dự phòng thay vì treo vô hạn

Kiến Trúc Tổng Quan

Trước khi viết code, hãy xem kiến trúc tổng thể:
┌─────────────────────────────────────────────────────────────┐
│                      Ứng Dụng Của Bạn                        │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                   Circuit Breaker Layer                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │   CLOSED    │──│   OPEN      │──│  HALF_OPEN  │          │
│  │  Normal     │  │  Blocking   │  │  Testing    │          │
│  │  Operations │  │  Requests   │  │  Recovery   │          │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    HolySheep AI API                          │
│               https://api.holysheep.ai/v1                    │
└─────────────────────────────────────────────────────────────┘

Triển Khai Chi Tiết (Python)

1. Cài Đặt Môi Trường

Đầu tiên, bạn cần cài đặt các thư viện cần thiết:
pip install requests tenacity pybreaker

2. Implement Circuit Breaker Cơ Bản

Đây là code hoàn chỉnh mà tôi đã sử dụng trong production:
import requests
import time
from tenacity import retry, stop_after_attempt, wait_exponential
from dataclasses import dataclass
from enum import Enum
from typing import Optional, Callable, Any
import logging

Cấu hình logging

logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) class CircuitState(Enum): CLOSED = "closed" # Hoạt động bình thường OPEN = "open" # Chặn request HALF_OPEN = "half_open" # Thử nghiệm phục hồi @dataclass class CircuitBreakerConfig: failure_threshold: int = 5 # Số lỗi để mở circuit success_threshold: int = 2 # Số lần thành công để đóng circuit timeout_seconds: int = 30 # Thời gian chờ trước khi thử lại half_open_max_calls: int = 3 # Số request trong trạng thái half-open class CircuitBreaker: """Triển khai Circuit Breaker Pattern cho API AI""" def __init__(self, config: CircuitBreakerConfig = None): self.config = config or CircuitBreakerConfig() self.state = CircuitState.CLOSED self.failure_count = 0 self.success_count = 0 self.last_failure_time: Optional[float] = None self.half_open_calls = 0 def call(self, func: Callable, *args, **kwargs) -> Any: """Thực thi hàm với circuit breaker protection""" # Kiểm tra trạng thái OPEN if self.state == CircuitState.OPEN: if self._should_attempt_reset(): self._transition_to_half_open() else: raise CircuitBreakerOpenError( f"Circuit breaker is OPEN. Next attempt in {self._get_remaining_timeout()}s" ) # Kiểm tra trạng thái HALF_OPEN if self.state == CircuitState.HALF_OPEN: if self.half_open_calls >= self.config.half_open_max_calls: raise CircuitBreakerOpenError("Circuit breaker HALF_OPEN: max calls reached") self.half_open_calls += 1 # Thực thi request try: result = func(*args, **kwargs) self._on_success() return result except Exception as e: self._on_failure() raise e def _should_attempt_reset(self) -> bool: """Kiểm tra xem đã đến lúc thử reset chưa""" if self.last_failure_time is None: return True elapsed = time.time() - self.last_failure_time return elapsed >= self.config.timeout_seconds def _transition_to_half_open(self): """Chuyển sang trạng thái half-open""" self.state = CircuitState.HALF_OPEN self.half_open_calls = 0 logger.info("Circuit breaker transitioned to HALF_OPEN") def _on_success(self): """Xử lý khi request thành công""" if self.state == CircuitState.HALF_OPEN: self.success_count += 1 if self.success_count >= self.config.success_threshold: self.state = CircuitState.CLOSED self.failure_count = 0 self.success_count = 0 logger.info("Circuit breaker CLOSED - Service recovered!") else: # Reset failure count khi ở trạng thái closed self.failure_count = 0 def _on_failure(self): """Xử lý khi request thất bại""" self.failure_count += 1 self.last_failure_time = time.time() if self.state == CircuitState.HALF_OPEN: # Thất bại trong half-open -> quay lại open self.state = CircuitState.OPEN logger.warning("Circuit breaker OPENED from HALF_OPEN - Service still failing") elif self.failure_count >= self.config.failure_threshold: self.state = CircuitState.OPEN logger.warning(f"Circuit breaker OPENED after {self.failure_count} failures") def _get_remaining_timeout(self) -> float: """Tính thời gian còn lại trước khi thử reset""" if self.last_failure_time is None: return 0 elapsed = time.time() - self.last_failure_time return max(0, self.config.timeout_seconds - elapsed) @property def status(self) -> dict: """Trả về trạng thái hiện tại của circuit breaker""" return { "state": self.state.value, "failure_count": self.failure_count, "success_count": self.success_count, "remaining_timeout": self._get_remaining_timeout() } class CircuitBreakerOpenError(Exception): """Exception khi circuit breaker đang ở trạng thái OPEN""" pass

3. Tích Hợp Với HolySheep AI API

Đây là phần quan trọng - cách kết nối circuit breaker với HolySheep AI:
import requests
from typing import Optional, Dict, Any
import json

class HolySheepAIClient:
    """Client cho HolySheep AI với Circuit Breaker Protection"""
    
    def __init__(self, api_key: str, circuit_breaker: CircuitBreaker = None):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.circuit_breaker = circuit_breaker or CircuitBreaker()
        
        # Retry configuration với exponential backoff
        self.max_retries = 3
        self.retry_delays = [1, 2, 4]  # seconds
        
    def _make_request(self, endpoint: str, data: Dict) -> Dict[str, Any]:
        """Thực hiện HTTP request đến API"""
        url = f"{self.base_url}/{endpoint}"
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        
        response = requests.post(url, headers=headers, json=data, timeout=30)
        response.raise_for_status()
        return response.json()
    
    def chat_completions(self, messages: list, model: str = "gpt-4.1") -> Dict[str, Any]:
        """
        Gọi API chat completions với circuit breaker protection
        Supported models: gpt-4.1, claude-sonnet-4.5, gemini-2.5-flash, deepseek-v3.2
        """
        
        def _actual_call():
            return self._make_request("chat/completions", {
                "model": model,
                "messages": messages
            })
        
        # Wrap với circuit breaker
        try:
            result = self.circuit_breaker.call(_actual_call)
            return result
        except CircuitBreakerOpenError as e:
            logger.error(f"Circuit breaker opened: {e}")
            # Fallback response
            return {
                "error": "Service temporarily unavailable",
                "fallback": True,
                "circuit_status": self.circuit_breaker.status,
                "message": "Please try again later or use cached response"
            }
    
    def embeddings(self, input_text: str, model: str = "text-embedding-3-small") -> Dict[str, Any]:
        """Tạo embeddings với circuit breaker protection"""
        
        def _actual_call():
            return self._make_request("embeddings", {
                "model": model,
                "input": input_text
            })
        
        return self.circuit_breaker.call(_actual_call)

============== SỬ DỤNG TRONG THỰC TẾ ==============

Khởi tạo client

api_key = "YOUR_HOLYSHEEP_API_KEY" # Thay bằng API key của bạn client = HolySheepAIClient(api_key)

Ví dụ gọi chat completions

messages = [ {"role": "system", "content": "Bạn là trợ lý AI hữu ích"}, {"role": "user", "content": "Giải thích circuit breaker pattern"} ] try: response = client.chat_completions(messages, model="deepseek-v3.2") print(f"Response: {response['choices'][0]['message']['content']}") except Exception as e: print(f"Error: {e}")

Kiểm tra trạng thái circuit breaker

print(f"Circuit Status: {client.circuit_breaker.status}")

4. Triển Khai Với Asyncio (Async/Await)

Nếu ứng dụng của bạn cần xử lý bất đồng bộ:
import asyncio
import aiohttp
from typing import List, Optional

class AsyncHolySheepClient:
    """Async client với circuit breaker cho high-performance applications"""
    
    def __init__(self, api_key: str, circuit_breaker: CircuitBreaker = None):
        self.api_key = api_key
        self.base_url = "https://api.holysheep.ai/v1"
        self.circuit_breaker = circuit_breaker or CircuitBreaker()
        self._session: Optional[aiohttp.ClientSession] = None
    
    async def _get_session(self) -> aiohttp.ClientSession:
        """Lazy initialization của aiohttp session"""
        if self._session is None or self._session.closed:
            self._session = aiohttp.ClientSession(
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json"
                }
            )
        return self._session
    
    async def chat_completions_async(self, messages: List[dict], model: str = "gpt-4.1") -> dict:
        """Gọi chat completions bất đồng bộ"""
        
        async def _async_call():
            session = await self._get_session()
            async with session.post(
                f"{self.base_url}/chat/completions",
                json={"model": model, "messages": messages},
                timeout=aiohttp.ClientTimeout(total=30)
            ) as response:
                response.raise_for_status()
                return await response.json()
        
        return await self.circuit_breaker.call(_async_call)
    
    async def batch_chat(self, requests_data: List[List[dict]], model: str = "gemini-2.5-flash") -> List[dict]:
        """
        Xử lý nhiều request song song với concurrency limit
        Sử dụng Gemini 2.5 Flash với giá chỉ $2.50/MTok - tiết kiệm 70% so với GPT-4.1
        """
        semaphore = asyncio.Semaphore(5)  # Giới hạn 5 request đồng thời
        
        async def _bounded_request(messages):
            async with semaphore:
                return await self.chat_completions_async(messages, model)
        
        tasks = [_bounded_request(req) for req in requests_data]
        return await asyncio.gather(*tasks, return_exceptions=True)
    
    async def close(self):
        """Đóng session khi không cần thiết"""
        if self._session and not self._session.closed:
            await self._session.close()

============== VÍ DỤ SỬ DỤNG ASYNC ==============

async def main(): client = AsyncHolySheepClient("YOUR_HOLYSHEEP_API_KEY") # Batch request - ví dụ xử lý nhiều câu hỏi cùng lúc batch_requests = [ [{"role": "user", "content": "Câu hỏi 1"}], [{"role": "user", "content": "Câu hỏi 2"}], [{"role": "user", "content": "Câu hỏi 3"}], ] results = await client.batch_chat(batch_requests, model="gemini-2.5-flash") for i, result in enumerate(results): if isinstance(result, Exception): print(f"Request {i} failed: {result}") else: print(f"Request {i}: {result['choices'][0]['message']['content'][:100]}") # Kiểm tra trạng thái sau batch print(f"Final circuit status: {client.circuit_breaker.status}") await client.close()

Chạy async main

asyncio.run(main())

Monitoring và Metrics

Để theo dõi health của circuit breaker trong production:
from datetime import datetime
import json

class CircuitBreakerMonitor:
    """Giám sát và ghi log trạng thái circuit breaker"""
    
    def __init__(self):
        self.history: list = []
        self.alerts: list = []
    
    def record_state_change(self, old_state: CircuitState, new_state: CircuitState, cb_status: dict):
        """Ghi lại khi có thay đổi trạng thái"""
        entry = {
            "timestamp": datetime.now().isoformat(),
            "old_state": old_state.value,
            "new_state": new_state.value,
            "failure_count": cb_status["failure_count"],
            "remaining_timeout": cb_status["remaining_timeout"]
        }
        self.history.append(entry)
        
        # Alert khi chuyển sang OPEN
        if new_state == CircuitState.OPEN:
            self._send_alert(entry)
    
    def _send_alert(self, alert_data: dict):
        """Gửi cảnh báo khi circuit breaker mở"""
        self.alerts.append(alert_data)
        logger.error(f"ALERT: Circuit breaker OPENED! Data: {alert_data}")
        
        # Trong production, gửi qua Slack/Email/PagerDuty
        # slack_webhook.post(f"Circuit breaker opened: {json.dumps(alert_data)}")
    
    def get_health_report(self) -> dict:
        """Tạo báo cáo sức khỏe hệ thống"""
        recent_alerts = [a for a in self.alerts 
                        if datetime.fromisoformat(a["timestamp"]) > 
                        datetime.now() - timedelta(hours=1)]
        
        return {
            "total_state_changes": len(self.history),
            "alerts_last_hour": len(recent_alerts),
            "circuit_health_score": max(0, 100 - len(recent_alerts) * 20),
            "recent_changes": self.history[-10:]  # 10 thay đổi gần nhất
        }

Tích hợp monitoring vào client

class MonitoredHolySheepClient(HolySheepAIClient): """Client với monitoring tích hợp""" def __init__(self, api_key: str): super().__init__(api_key) self.monitor = CircuitBreakerMonitor() self._last_state = self.circuit_breaker.state def chat_completions(self, messages: list, model: str = "gpt-4.1") -> dict: result = super().chat_completions(messages, model) # Kiểm tra thay đổi trạng thái if self.circuit_breaker.state != self._last_state: self.monitor.record_state_change( self._last_state, self.circuit_breaker.state, self.circuit_breaker.status ) self._last_state = self.circuit_breaker.state return result

Test Circuit Breaker

Đảm bảo circuit breaker hoạt động đúng bằng unit tests:
import pytest
from unittest.mock import Mock, patch
import time

class TestCircuitBreaker:
    """Unit tests cho Circuit Breaker implementation"""
    
    def test_circuit_starts_closed(self):
        """Test circuit breaker bắt đầu ở trạng thái CLOSED"""
        cb = CircuitBreaker()
        assert cb.state == CircuitState.CLOSED
    
    def test_circuit_opens_after_failures(self):
        """Test circuit mở sau khi đủ số lần thất bại"""
        cb = CircuitBreaker(CircuitBreakerConfig(failure_threshold=3))
        
        # Gọi hàm thất bại 3 lần
        failing_func = Mock(side_effect=Exception("API Error"))
        
        for _ in range(3):
            with pytest.raises(Exception):
                cb.call(failing_func)
        
        assert cb.state == CircuitState.OPEN
    
    def test_circuit_transitions_to_half_open(self):
        """Test circuit chuyển sang HALF_OPEN sau timeout"""
        cb = CircuitBreaker(CircuitBreakerConfig(
            failure_threshold=2,
            timeout_seconds=1
        ))
        
        failing_func = Mock(side_effect=Exception("Error"))
        
        # Trigger open
        for _ in range(2):
            with pytest.raises(Exception):
                cb.call(failing_func)
        
        assert cb.state == CircuitState.OPEN
        
        # Wait for timeout
        time.sleep(1.1)
        
        # Thử gọi lại - nên chuyển sang half-open
        try:
            cb.call(failing_func)
        except:
            pass
        
        assert cb.state == CircuitState.HALF_OPEN
    
    def test_circuit_closes_after_success(self):
        """Test circuit đóng lại sau khi thành công trong half-open"""
        cb = CircuitBreaker(CircuitBreakerConfig(
            failure_threshold=2,
            success_threshold=2
        ))
        
        # Open circuit
        failing_func = Mock(side_effect=Exception("Error"))
        for _ in range(2):
            with pytest.raises(Exception):
                cb.call(failing_func)
        
        # Transition to half-open
        time.sleep(0.1)
        cb._transition_to_half_open()
        
        # Success trong half-open
        success_func = Mock(return_value="Success")
        for _ in range(2):
            cb.call(success_func)
        
        assert cb.state == CircuitState.CLOSED
    
    def test_circuit_blocks_requests_when_open(self):
        """Test circuit chặn requests khi đang OPEN"""
        cb = CircuitBreaker(CircuitBreakerConfig(
            failure_threshold=1,
            timeout_seconds=60
        ))
        
        # Open circuit
        failing_func = Mock(side_effect=Exception("Error"))
        with pytest.raises(Exception):
            cb.call(failing_func)
        
        # Tiếp tục gọi - phải raise CircuitBreakerOpenError
        with pytest.raises(CircuitBreakerOpenError):
            cb.call(failing_func)

Chạy tests

if __name__ == "__main__": pytest.main([__file__, "-v"])

Lỗi Thường Gặp và Cách Khắc Phục

1. Lỗi: CircuitBreakerOpenError - Circuit breaker không bao giờ reset

**Nguyên nhân**: Thời gian timeout quá ngắn hoặc dịch vụ API thực sự đang down. **Cách khắc phục**:
# Sai - timeout quá ngắn khiến circuit liên tục flip
cb = CircuitBreaker(CircuitBreakerConfig(timeout_seconds=1))

Đúng - timeout đủ dài để dịch vụ phục hồi

cb = CircuitBreaker(CircuitBreakerConfig( failure_threshold=5, # 5 lỗi liên tiếp mới open timeout_seconds=60, # Chờ 60 giây trước khi thử lại success_threshold=3 # 3 lần thành công mới đóng hoàn toàn ))

Thêm monitoring để phát hiện vấn đề thực sự

monitor = CircuitBreakerMonitor() health = monitor.get_health_report() if health['circuit_health_score'] < 50: # Cảnh báo: Dịch vụ có vấn đề nghiêm trọng send_alert_to_oncall(health)

2. Lỗi: 429 Too Many Requests hoặc RateLimitError

**Nguyên nhân**: Vượt quá rate limit của API. Với HolySheep AI, mỗi plan có giới hạn request khác nhau. **Cách khắc phục**:
class RateLimitAwareClient(HolySheepAIClient):
    """Client xử lý rate limit thông minh"""
    
    def __init__(self, api_key: str):
        super().__init__(api_key)
        self.request_count = 0
        self.last_reset = time.time()
        self.rate_limit = 100  # requests per minute
        
    def chat_completions(self, messages: list, model: str = "gpt-4.1") -> dict:
        # Reset counter mỗi phút
        if time.time() - self.last_reset > 60:
            self.request_count = 0
            self.last_reset = time.time()
        
        # Kiểm tra rate limit
        if self.request_count >= self.rate_limit:
            wait_time = 60 - (time.time() - self.last_reset)
            if wait_time > 0:
                logger.warning(f"Rate limit reached. Waiting {wait_time}s")
                time.sleep(wait_time)
                self.request_count = 0
                self.last_reset = time.time()
        
        self.request_count += 1
        return super().chat_completions(messages, model)

Sử dụng Exponential Backoff cho rate limit

@retry(stop=stop_after_attempt(5), wait=wait_exponential(multiplier=1, max=60)) def call_with_retry(messages, model): try: return client.chat_completions(messages, model) except RateLimitError: logger.warning("Rate limited, retrying with exponential backoff...") raise

3. Lỗi: AuthenticationError - API key không hợp lệ

**Nguyên nhân**: API key sai, hết hạn, hoặc chưa kích hoạt. **Cách khắc phục**:
# Đúng - Kiểm tra và validate API key trước khi sử dụng
def validate_api_key(api_key: str) -> bool:
    """Validate API key format và quyền truy cập"""
    if not api_key or len(api_key) < 20:
        return False
    
    # Test call với endpoint nhẹ
    test_client = HolySheepAIClient(api_key)
    try:
        test_client._make_request("models", {})  # Test endpoint
        return True
    except requests.HTTPError as e:
        if e.response.status_code == 401:
            logger.error("Invalid API key - please check your credentials")
            return False
        elif e.response.status_code == 403:
            logger.error("API key lacks permissions - please upgrade your plan")
            return False
        raise

Sử dụng trong initialization

API_KEY = os.environ.get("HOLYSHEEP_API_KEY") if not validate_api_key(API_KEY): raise ValueError("Invalid HolySheep API key configuration") client = HolySheepAIClient(API_KEY)

4. Lỗi: Timeout khi gọi model lớn

**Nguyên nhân**: Model lớn như GPT-4.1 có thời gian xử lý lâu hơn, timeout mặc định không đủ. **Cách khắc phục**:
# Đúng - Cấu hình timeout phù hợp với từng model
class ModelAwareClient(HolySheepAIClient):
    """Client điều chỉnh timeout theo model được sử dụng"""
    
    TIMEOUT_CONFIG = {
        "gpt-4.1": 120,           # Model lớn, cần timeout dài
        "claude-sonnet-4.5": 90,  # Claude cũng cần thời gian
        "gemini-2.5-flash": 30,   # Flash model nhanh hơn
        "deepseek-v3.2": 60,     # DeepSeek ở mức trung bình
    }
    
    def _make_request(self, endpoint: str, data: Dict) -> Dict[str, Any]:
        url = f"{self.base_url}/{endpoint}"
        model = data.get("model", "gpt-4.1")
        timeout = self.TIMEOUT_CONFIG.get(model, 60)
        
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        
        response = requests.post(
            url, 
            headers=headers, 
            json=data, 
            timeout=timeout  # Timeout động theo model
        )
        response.raise_for_status()
        return response.json()

Nếu dùng async client

async def _get_session(self) -> aiohttp.ClientSession: if self._session is None or self._session.closed: model = getattr(self, '_current_model', 'gpt-4.1') timeout = self.TIMEOUT_CONFIG.get(model, 60) self._session = aiohttp.ClientSession( headers={ "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } ) return self._session

So Sánh Chi Phí Khi Sử Dụng Circuit Breaker

Một trong những lợi ích lớn nhất của circuit breaker là **tiết kiệm chi phí API**: | Model | Giá/MTok | Không có CB (lãng phí) | Có CB (tối ưu) | Tiết kiệm | |-------|----------|------------------------|----------------|-----------| | GPT-4.1 | $8.00 | ~$15-20/tháng | ~$8-10/tháng | **40-50%** | | Claude Sonnet 4.5 | $15.00 | ~$25-35/tháng | ~$12-18/tháng | **45-50%** | | Gemini 2.5 Flash | $2.50 | ~$5-8/tháng | ~$3-5/tháng | **35-40%** | | DeepSeek V3.2 | $0.42 | ~$2-3/tháng | ~$1-2/tháng | **30-35%** | > **Tip**: Với HolySheep AI, bạn có thể kết hợp nhiều model trong cùng ứng dụng. Sử dụng Gemini 2.5 Flash cho các task đơn giản, GPT-4.1 cho các task phức tạp. Circuit breaker sẽ tự động routing và fallback giữa các model.

Checklist Triển Khhai Production

Trước khi deploy lên production, hãy đảm bảo đã hoàn thành: - [ ] Implement circuit breaker với config phù hợp - [ ] Thêm retry logic với exponential backoff - [ ] Cấu hình timeout động theo model - [ ] Implement fallback response khi circuit open - [ ] Thêm monitoring và alerting - [ ] Viết unit tests cho circuit breaker - [ ] Test manual với các trường hợp: API down, slow response, rate limit - [ ] Cấu hình rate limit client-side - [ ] Validate API key trước khi sử dụng - [ ] Setup logging đầy đủ

Kết Luận

Circuit breaker là một pattern đơn giản nhưng cực kỳ hiệu quả để bảo vệ ứng dụng của bạn khỏi các vấn