Spring Reactive microservice - phần 1

Một trong các thành phần của Microservice là Circuit Breaker (Bộ chuyển mạch). Mô hình Circuit Breaker (Bộ chuyển mạch) sẽ gặp các thử thách, chúng ta đưa ra giải pháp, và yêu cầu của giải pháp.

Thách thức: Một hệ thống microservices sử dụng việc giao tiếp giữa các microservice đồng bộ (synchronous) có thể gây ra một chuỗi các thất bại (chain of failure). Bạn hãy hình dung là một dây xích gồm nhiều mắt xích, chỉ cần đứt một mắt xích, thì cả sợi dây xích mất tác dụng. Nếu một trong số nhiều microservice dừng hoạt động, một số microservice khác cần giao tiếp với nó bị ảnh hưởng, khiến cho nhiều microservice khác cũng có thể ngừng hoạt động, hoặc hoạt động sai, và cả hệ thống sẽ rơi vào một tình trạng rất tệ trên diện rộng. Đặc biệt các thao tác I/O (input - output) mà lập trình kiểu đồng bộ, thì một thao tác đọc file thất bại, toàn bộ các thao tác phía sau sẽ dừng lại, và do đó một lỗi một microservice gây ra việc dừng hoạt động của cả hệ thống.

Giải pháp: Thêm Circuit Breaker (Bộ chuyển mạch) để tránh một truy vấn (request) đi vào từ trình gọi (caller) nếu nó nhận biết rằng có microservice đang dừng hoạt động. Nói đơn giản, nếu caller gửi đến một request, nếu thấy microservice A đang chết, thì chuyển request sang microservice X khác A.

Phần mềm dùng để triển khai: Có rất nhiều phần mềm, framework tốt để giải quyết các thách thức về hệ thống microservice của chúng ta, và quan trọng nhất, xử lý các thách thức đến với chúng:

  • Spring Boot
  • Spring Cloud/Netflix OSS
  • Docker
  • Kubernetes
  • Istio (một lưới dịch vụ - service mesh)

Bảng dưới đây ánh xạ các mô hình thiết kế mà chúng ta cần xử lý các thách thức, cùng với các công cụ mã nguồn mở tương ứng đã triển khai các mô hình cần đến.

Mô hình thiết kế Spring Boot Spring Cloud
Khám phá dịch vụ (Service discovery) Netflix Eureka, Netflix Ribbon
Thành phần đón request (Edge server) Spring Cloud, Spring Security OAuth
Reactive microservices Spring Reactor, Spring WebFlux
Cấu hình tập trung Spring Config Server
Phân tích log tập trung
Truy vết phân tán Spring Cloud Sleuth, Zipkin
Bộ chuyển mạch Resilience4j
Kiểm soát vòng lặp

All Rights Reserved