Giao tiếp đồng bộ chặn bên gọi cho đến khi có phản hồi; giao tiếp bất đồng bộ gửi một message và tiếp tục mà không chờ. Mỗi loại có những đánh đổi khác nhau về sự gắn kết, độ trễ, và khả năng phục hồi.
Giao tiếp đồng bộ chặn bên gọi cho đến khi có phản hồi; giao tiếp bất đồng bộ gửi một message và tiếp tục mà không chờ. Mỗi loại có những đánh đổi khác nhau về sự gắn kết, độ trễ, và khả năng phục hồi.
| Khía cạnh | Đồng bộ (REST/gRPC) | Bất đồng bộ (messaging) |
|---|
| Bên gọi có chờ? | Có | Không |
| Gắn kết thời gian | Chặt | Lỏng |
| Bền bỉ trước sự cố | Thấp | Cao (broker đệm) |
| Tính nhất quán | Tức thì | Eventual |
| Độ phức tạp | Thấp hơn | Cao hơn |
| Khả năng debug | Dễ hơn (tuyến tính) | Khó hơn (luồng) |
SYNC: Caller ──request──▶ Service
Caller ◀─response── Service (bị chặn suốt thời gian đó)
ASYNC: Caller ──message──▶ [ Queue ] ──▶ Service
Caller tiếp tục ngay; Service xử lý sau
Async giấu lỗi — một message bị rớt hoặc poison message có thể âm thầm phá vỡ một luồng công việc. Bạn cần dead-letter queue và monitoring.
Lựa chọn này trực tiếp kiểm soát cách lỗi lan truyền: lời gọi sync thất bại nhanh và rõ ràng, message async tách rời nhưng dời vấn đề sang cho consumer.
Pha trộn chúng tốt — sync ở rìa, async cho luồng công việc — là một kỹ năng cốt lõi trong việc xây dựng microservices bền bỉ.