Tổng quan về gRPC

Nguyễn Duy Nam
3 min readApr 25, 2022

--

Bài đăng này sẽ cung cấp cho bạn cái nhìn tổng quan về “gRPC là gì?”, “So sánh Restful API và gRPC?” sau đó chúng ta sẽ cùng nhau tạo một triển khai đơn giản của gRPC với Golang

Như chúng ta đã biết, kiến trúc Microservices là một kiến trúc phần mềm để tách hệ thống lớn thành những hệ thống nhỏ hơn. Hiện nay, các ứng dụng rất lớn và liên tục được update. Với kiến trúc monolith, việc gom toàn bộ ứng dụng vào một cục làm việc nâng cấp trở nên khó khăn và mất thời gian.

Với Microservices do tách biệt nên nếu một service bị lỗi, toàn bộ hệ thống vẫn hoạt động bình thường. Với monolith, một module bị lỗi có thể sẽ kéo theo toàn bộ hệ thống… tiêu đời.

Các service có thể được xây dựng từ nhiều ngôn ngữ khác nhau. Sự giao tiếp của các service trong Microservice cần phải được đảm bảo. gRPC được sinh ra để giải quyết vấn đề này.

Ví dụ minh họa

gRPC là gì?

  • Viết tắt của General-purpose Remote Procedure Calls
  • gRPC là một framework open-source, miễn phí được phát triển bởi Google
  • Là một phần của Cloud Native Computing Foudation — giống như Docker & Kubernetes
  • Xây dựng trên HTTP/2.0

Cách gRPC hoạt động.

  • Định nghĩa message và service sử dụng Protocol Buffers
  • gRPC sẽ generate code, chỉ cần implement phần xử lí
  • File .proto có thể generate ra nhiều ngôn ngữ lập trình

4 loại API của gRPC

  • Unary: Phương thức gọi một lần và trả về ngay lập tức.
  • Server streaming: Khi gọi phương thức này, client phải đợi cho đến khi server kết thúc quá trình gửi response.
  • Client streaming: Khi gọi phương thức này, server phải đợi cho đến khi client hoàn tất việc gửi dữ liệu đến server.
  • Bi directional streaming: Loại phương pháp này xảy ra khi bạn cần client và server được kết nối và gửi dữ liệu trực tiếp với kích thước lớn hoặc đối với dữ liệu đó cần thời gian thực, chẳng hạn như trò chuyện hoặc theo dõi, v.v.

So sánh Restful API và gRPC

Lời kết

Trong blog này, ta đã thảo luận tổng quan về “gRPC là gì?”, “So sánh Restful API và gRPC?”. Tôi hy vọng tất cả các bạn sẽ hiểu cơ bản về gRPC.

Trong blog tiếp theo, tôi sẽ trình bày cách triển khai gRPC service cơ bản trong Golang.

Cảm ơn vì đã đọc!

Link tài liệu tham khảo: https://grpc.io/docs/languages/go/

--

--