Một lợi ích then chốt của microservices là mở rộng từng service độc lập để khớp với tải riêng của nó, thay vì mở rộng cả ứng dụng. Tìm điểm nghẽn khi đó là vấn đề đo lường theo từng service và từng bước nhảy.
Một lợi ích then chốt của microservices là mở rộng từng service độc lập để khớp với tải riêng của nó, thay vì mở rộng cả ứng dụng. Tìm điểm nghẽn khi đó là vấn đề đo lường theo từng service và từng bước nhảy.
# Kubernetes HPA: mở rộng orders theo CPU
minReplicas: 3
maxReplicas: 20
metric: cpu
targetUtilization: 70 # thêm pod khi CPU trung bình > 70%
1. Metric: service nào có độ trễ / mức bão hòa cao? (RED/USE)
2. Trace: SPAN nào trong request bị chậm?
3. Khoan sâu: Truy vấn DB? lock? lời gọi N+1? GC pause?
Gateway ──┤ Orders ──┤ Payments ████████████ ← 80% độ trễ ở đây
Inventory ─┤
⚠️ Lời gọi đồng bộ hay tán gẫu (fan-out mỗi request)
⚠️ Database dùng chung/quá tải
⚠️ Thiếu cache hoặc cache nguội
⚠️ Retry không giới hạn khuếch đại tải
Mở rộng một service mà điểm nghẽn của nó là một database dùng chung chỉ dồn thêm tải lên DB — hãy mở rộng đúng ràng buộc thực sự, không phải triệu chứng.
Mở rộng độc lập cho phép bạn chi năng lực chính xác ở nơi có tải, rẻ hơn nhiều so với mở rộng toàn bộ một monolith.
Nhưng mở rộng một cách mù quáng lãng phí tiền và có thể làm mọi thứ tệ hơn; đo lường metric theo từng service và trace theo từng bước nhảy là thứ cho bạn biết ràng buộc thực sự cần sửa.