Quay lại danh sách case study
Tối ưu hóa hiệu năng API Gateway bằng Node.js và Clustering
Nâng cấp API Gateway tự phát triển bằng Node.js để chịu tải hàng triệu request mỗi ngày với độ trễ tối thiểu.
Bối cảnh
API Gateway trung tâm của công ty xử lý xác thực, rate limiting và chuyển tiếp request đang gặp tình trạng nghẽn cổ chai, thời gian phản hồi tăng cao vào giờ cao điểm.
Vấn đề cần xử lý
Code xử lý middleware kiểm tra token quá nặng, thực hiện gọi database đồng bộ liên tục cho mỗi request và chưa tận dụng tối đa đa nhân CPU của máy chủ.
Hướng xử lý đề xuất
Áp dụng Cluster module, chuyển đổi việc xác thực token sang cơ chế asymmetric JWT (Public/Private key) để không phải gọi DB kiểm tra, và đưa Redis vào làm tầng rate-limiting phân tán.
Câu trả lời mẫu khi phỏng vấn
API Gateway là cửa ngõ của toàn hệ thống nên không được phép có độ trễ lớn. Tôi đã tiến hành profiling và phát hiện Gateway đang gọi database để xác thực token cho mọi request. Tôi đã thay đổi chiến lược sang sử dụng JWT với Public Key để Gateway có thể tự xác thực offline ngay lập tức. Bên cạnh đó, tôi cấu hình lại Cluster module kết hợp với Redis để rate limiting ở tầng memory nhanh chóng. Kết quả là thông lượng xử lý tăng gấp 4 lần.
Trade-off
Việc dùng JWT offline đồng nghĩa với việc không thể thu hồi token ngay lập tức khi chưa hết hạn, phải kết hợp thêm danh sách đen (blacklist) nhỏ trên Redis cho các trường hợp đăng xuất khẩn cấp.
Kết quả kỳ vọng
Độ trễ trung bình của API Gateway giảm từ 120ms xuống còn 15ms, đáp ứng hoàn hảo lượng traffic tăng trưởng của doanh nghiệp.
Bài học khi trả lời phỏng vấn
Ở tầng Gateway, mọi tác vụ I/O không cần thiết như gọi DB đều phải được loại bỏ hoặc thay thế bằng cơ chế caching/cryptographic verification.