Handle Failover Service

Dạ, khi một service trong hệ thống bị chết, em xử lý fail-over như sau:


1. Sử dụng Service Discovery + Load Balancer:

  • Em dùng Spring Cloud Eureka hoặc Consul để đăng ký/dò service.

  • API Gateway (hoặc client) sẽ không gọi đến instance đã chết nhờ health check tự động.

  • Load balancer (Ribbon, Spring Cloud LoadBalancer) sẽ tự chọn instance còn sống.


2. Replication (Multiple Instances):

  • Mỗi service em deploy tối thiểu 2 instance (multi-pod nếu dùng Kubernetes).

  • Nếu 1 instance chết, request sẽ được chuyển sang instance khác.


3. Health Check + Auto-restart:

  • Dùng liveness/readiness probe (Kubernetes) hoặc Docker healthcheck.

  • Khi service fail, orchestrator sẽ tự khởi động lại container.


4. Circuit Breaker:

  • Dùng Resilience4j CircuitBreaker: nếu call đến service A liên tục lỗi → circuit sẽ open → không gọi nữa trong vài giây → tránh làm chết service gọi.


5. Fallback:

  • Nếu service phụ chết (không critical), em dùng fallback logic:

    • Trả data tạm thời.

    • Hoặc queue lại để xử lý sau.


Tóm lại: em đảm bảo fail-over bằng replication, service discovery, health check, circuit breaker, và fallback, giúp hệ thống tự phục hồi, không gián đoạn.

Last updated