I. Giới thiệu Reverse Proxy vs API Gateway vs Load Balancer
Phân tích bản chất, mục đích và cơ chế hoạt động của ba thành phần điều phối mạng cốt lõi trong các hệ thống hiện đại.
Nội dung nguyên bản chi tiết từ note-9-28.md bao gồm phân biệt Reverse Proxy, API Gateway, Load Balancer, các thuật toán cân bằng tải và các câu hỏi suy ngẫm kiến trúc.
Phân tích bản chất, mục đích và cơ chế hoạt động của ba thành phần điều phối mạng cốt lõi trong các hệ thống hiện đại.
Nhấn vào ảnh để xem kích thước đầy đủ trong tab mới.
- Là lớp trung gian nằm giữa Client và Application Server.
- Mục đích & Lợi ích:
- Mục đích & Chức năng:
- Là thành phần phân phối lưu lượng truy cập mạng đến một nhóm các Application Server backend.
- Mục đích & Cơ chế:
LƯU Ý KIẾN TRÚC:
API Gateway xử lý logic tầng 7 rất nặng (xác thực token, giải mã SSL, rate limiting...) nên tiêu tốn nhiều CPU/RAM. Nếu traffic dồn về quá lớn mà nó là một máy chủ đơn lẻ, nó sẽ nhanh chóng nghẽn cổ chai và sập ➔ Luôn đặt một Load Balancer (L4) phía trước để chia tải cho một cụm (cluster) nhiều API Gateway tự động mở rộng (auto-scale).
Các thuật toán cốt lõi quyết định cách thức phân phối lưu lượng truy cập từ Client đến từng máy chủ backend:
Cứ tuần tự lần lượt chia request cho từng server trong danh sách.
Cái nào đã xử lý request nào rồi thì tiếp tục xử lý request đó (duy trì phiên làm việc).
Cho phép gán trọng số cho từng server. Server có cấu hình mạnh hơn và trọng số cao hơn sẽ nhận nhiều request hơn.
Dựa vào hàm băm địa chỉ IP hoặc đường dẫn URL của request để cố định request đến từng server cụ thể.
Chọn server hiện có số lượng kết nối đang hoạt động ít nhất để xử lý request tiếp theo.
Chọn server có thời gian phản hồi (response time) chậm nhất để xử lý request.
Các vấn đề thiết kế then chốt nhằm kiểm tra tính độc lập, ranh giới dịch vụ và kiến trúc phân tán:
Một monolith được chia module tốt khác gì một "big ball of mud"?
Hai microservices có source code tách riêng nhưng sửa trực tiếp 30 table chung. Chúng có thực sự độc lập không?
Vì sao browser biết trực tiếp địa chỉ của 50 microservice tạo coupling nguy hiểm?
Nếu toàn bộ business rules nằm trong API Gateway còn microservice chỉ là CRUD, kiến trúc đó có còn đúng tinh thần microservice không?
Tại sao mobile app và desktop web có thể cần 2 API contract khác nhau dù dùng cùng business services?