#Backend & Microservices#Kiến trúc & System Design
Thiết kế Microservices: Giao tiếp qua gRPC vs REST API – Đánh giá hiệu năng và độ phức tạp
📖 2 phút đọc 💬 1 phản hồi
⚡ Tóm tắt 30 giây bởi TopDev AI
AI Overview Điểm nghẽn khi các Microservices gọi nhau bằng REST/JSON Khi tách một hệ thống nguyên khối Monolith thành 20 Microservices, lưu lượng mạng giao tiếp nội bộ giữa các dịch vụ East-West Traffic tăng lên…
☰ Mục lục bài viết (5 phần) Mở / Đóng mục lục
Điểm nghẽn khi các Microservices gọi nhau bằng REST/JSON#
Khi tách một hệ thống nguyên khối (Monolith) thành 20 Microservices, lưu lượng mạng giao tiếp nội bộ giữa các dịch vụ (East-West Traffic) tăng lên gấp nhiều lần.
Nếu sử dụng REST API truyền thống:
- Dữ liệu dạng JSON là chuỗi văn bản (text-based), kích thước cồng kềnh.
- Chi phí parse/stringify JSON tiêu tốn rất nhiều chu kỳ CPU.
- Mỗi request HTTP/1.1 phải mở kết nối TCP mới hoặc bị nghẽn Head-of-line blocking.
gRPC (phát triển bởi Google) sử dụng Protocol Buffers (Protobuf) và chạy trên nền HTTP/2 là giải pháp tối ưu cho bài toán này.
Định nghĩa Contract chuẩn với Protobuf#
PROTOBUF
syntax = "proto3";
package user;
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
}
message UserRequest {
int64 user_id = 1;
}
message UserResponse {
int64 user_id = 1;
string full_name = 2;
string email = 3;
repeated string roles = 4;
}
Kết quả đo lường hiệu năng thực tế#
| Tiêu chí | REST API (JSON) | gRPC (Protobuf) |
|---|---|---|
| Kích thước Payload | 100% (Chuẩn) | Giảm 60% - 70% (Dạng nhị phân) |
| Tốc độ tuần tự hóa (Serialization) | Chậm | Nhanh gấp 5 - 8 lần |
| Giao thức mạng | HTTP/1.1 hoặc HTTP/2 | HTTP/2 Multiplexing (1 kết nối cho nhiều request) |
| Streaming hai chiều | Phức tạp | Hỗ trợ tự nhiên (Bidirectional Streaming) |
Kiến trúc đề xuất: "Bên ngoài REST, bên trong gRPC"#
- API Gateway đối ngoại: Tiếp nhận request từ Web/Mobile bằng REST/JSON để thân thiện với trình duyệt.
- Giao tiếp nội bộ giữa các Service: 100% dùng gRPC để tối đa hóa tốc độ và giảm thiểu độ trễ mạng.
Góc thảo luận#
Team bạn có đang ứng dụng gRPC trong hệ thống không? Khâu chia sẻ file .proto giữa các repository được quản lý như thế nào?
Xem thêm nội dung liên quan:
Tác giả bài viết
Hoàng Nam (Tech Lead)
Tham gia từ thg 5 2026 · 15 bài viết · 25 phản hồi
Thảo luận
1 phản hồi
💬
Tham gia thảo luận
Cộng đồng mở · Đăng nhập 1-chạm qua Google
Bài liên quan trong #Backend & Microservices
-
Áp dụng Model Context Protocol (MCP) của Anthropic để kết nối AI với Postgres và Docker
Hoàng Nam (Tech Lead) · 💬 1 -
So sánh mô hình Embedding đa ngữ: OpenAI text-embedding-3 vs BGE-M3 vs Cohere
Minh Trí (AI Engineer) · 💬 1 -
Xây dựng Voice AI Agent thời gian thực với WebRTC và Whisper Live: Độ trễ dưới 500ms
Lan Anh (Senior Frontend) · 💬 1 -
Cấu hình Rate Limiting ở tầng Nginx và API Gateway: Chống DDOS Layer 7 hiệu quả
Đức Huy (DevOps Specialist) · 💬 1 -
Tokenization tiếng Việt của các LLM: Tại sao chi phí tiếng Việt đắt gấp 3 lần tiếng Anh?
Minh Trí (AI Engineer) · 💬 1