REST thì dễ, nhưng gọi API liên tục, latency cao quá, hay thử gRPC đi anh?
Lại là app giao hàng Việt Nam tách Order, Inventory, Notification Service. Ban đầu dùng REST, nhưng latency cao khi Order gọi Inventory liên tục. Chuyển sang Kafka, kết quả: latency giảm, nhưng team mất 2 tuần học event-driven.
REST vs gRPC vs Message Queue
- REST: Dễ implement, JSON thân thiện, nhưng latency cao, không tối ưu cho high-frequency call.
- gRPC: Nhanh (protobuf, HTTP/2), nhưng cần schema chặt chẽ, khó debug hơn REST.
- Message Queue (Kafka, RabbitMQ): Async, phù hợp cho event-driven, nhưng complex hơn (cần broker, consumer logic).
Ví dụ thực tế: Order Service gửi event OrderPlaced qua Kafka, Inventory Service consume để cập nhật kho. Notification Service gửi email không cần chờ response, giảm latency.
Code mẫu: Kafka Producer (Node.js)
const { Kafka } = require('kafkajs');const kafka = new Kafka({ clientId: 'order-service', brokers: ['kafka:9092'] });const producer = kafka.producer();
await producer.connect();await producer.send({ topic: 'order-placed', messages: [{ value: JSON.stringify({ orderId: 123 }) }],});Góc nhìn CTO
REST là “người bạn dễ gần”, gRPC là “đồng nghiệp hiệu quả”, Message Queue là “siêu anh hùng” nhưng cần quản lý. Chọn đúng công cụ theo workload, đừng dùng Kafka chỉ vì “nghe xịn”.
Checklist chọn communication:
- REST cho API đơn giản, ít call (VD: User info).
- gRPC cho low-latency, high-frequency call.
- Message Queue cho async, event-driven (VD: Order → Notification).
- Monitor latency và retry mechanism.
🎯 Tóm lại: Communication microservice không chỉ là REST. Chọn REST/gRPC/Kafka đúng ngữ cảnh, để service “nói chuyện” mượt mà, không lag!

Đăng nhận xét