- vừa được xem lúc

gRPC với Golang

0 0 28

Người đăng: Nguyễn Xuân Quang

Theo Viblo Asia

gRPC là gì

gRPC là viết tắt của “gRPC Remote Procedure Calls” là một framework RPC mã nguồn mở hiện đại và hiệu năng cao có thể chạy trên bất kỳ môi trường nào được Google khởi công phát triển vào 2015, đến 08/2016 thì được phát hành chính thức. Đây được cho là thế hệ tiếp theo của RPC đặc biệt là trong mô hình Microservices. Các backend developer phải đứng trước lựa chọn dùng REST API hay dùng gRPC. Và sự khác biệt của gRPC và REST API là gì? Chúng ta sẽ tìm hiểu chúng sau đây. image.png

RPC và REST API

  • REST API: Client và Server cần trao đổi state thông qua các resource được trả về. Do đó các response trả về thường là một resource.
  • RPC: Client cần server thực hiện tính toán hoặc trả về một thông tin cụ thể nào đó. Bản chất giống y như ta đang gọi hàm, chỉ là hàm đó ở máy chủ khác hoặc service khác. Từ đó response trả về chỉ là kết quả của “hàm” thôi, không hơn, không kém. image.png Hình ảnh được cắt ra từ video (https://www.youtube.com/watch?v=x8dybRs5q_g&list=PLC4c48H3oDRzLAn-YsHzY306qhuEvjhmh&index=1) Thông qua thông tin trên chúng ta có thể thấy, các method của REST API chỉ tập trung vào tạo mới, đọc, sửa và xóa resource. Còn nếu muốn resource làm một cái gì đó hoặc tính toán cụ thể thì đó chính là RPC-base APIs.

gRPC hoạt động như thế nào

image.png Quay lại với câu chuyện tăng tải cho cả hệ thống nhiều services (hay Microservices), Google đã phát triển 2 thứ:

  1. Một giao thức mới để tối ưu các connection, đảm bảo dữ liệu đi trao đổi liên tục với ít băng thông nhất có thể.
  2. Một định dạng dữ liệu mới để 2 đầu service (hoặc client và server) có thể hiểu được các message của nhau mà ít phải encode/decode. HTTP/2 sẽ hoạt động rất tốt với binary thay vì là text. Vì thế Google phát minh kiểu dữ liệu binary mới với tên gọi: Protobuf (tên đầy đủ là Protocol Buffers). Về tốc độ encode/decode các bạn có thể xem qua một benchmark dưới đây: image.png gRPC có 4 loại API sau đây mà các bạn có thể tìm hiểu để rõ hơn cách thức hoạt động:
  • Unary: Phương thức gọi một lần và trả về ngay lập tức.
  • Server streaming: Phương thức client phải đợi cho đến khi server kết thúc quá trình gửi response.
  • Client streaming: Phương thức server phải đợi cho đến khi client hoàn tất việc gửi dữ liệu đến server.
  • Bi directional streaming: 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ư chat,...

Kết

Tóm lại gRPC là một kỹ thuật rất ưu việt để scale tải hệ thống, đặc biệt trong hệ thống phân tán, nhiều services hoặc Microservices. Việc sử dụng tốt gRPC vẫn phụ thuộc phần lớn vào kỹ thuật xây dựng service và khả năng deploy và vận hành. Bài viết tham khảo: gRPC là gì? Vũ khí tối thượng tăng tải Microservices: https://200lab.io/blog/grpc-la-gi-vu-khi-tang-tai-microservices/ Tổng quan về gRPC: https://medium.com/@duynam_63755/tổng-quan-về-grpc-8b342dc9add7

Bình luận

Bài viết tương tự

- vừa được xem lúc

gRPC - Nó là gì và có nên sử dụng hay không?

Nhân một ngày rảnh rỗi, mình ngồi đọc lại RPC cũng như gRPC viết lại để nhớ lâu hơn. Vấn đề là gì và tại sao cần nó .

0 0 132

- vừa được xem lúc

Build gRPC client iOS đơn giản

Introduction. Trong bài viết trước, chúng ta đã cùng nhau tìm hiểu về gRPC và cách để build một gRPC server bằng node.js với các chức năng CRUD đơn giản:. https://viblo.

0 0 36

- vừa được xem lúc

Build CRUD Server đơn giản với gRPC và node.js

. gRPC là một framework RPC (remote procedure call) do Google phát triển, đã thu hút được nhiều sự quan tâm của cộng đồng software developer trong những năm vừa qua. Đặc biệt, gRPC được ứng dụng nhiều trong các hệ thống microservice bởi nhiều đặc tính vượt trội như: open source, không phụ thuộc vào

0 0 166

- vừa được xem lúc

Microservice với Golang, NodeJS và gRPC (Phần 2)

Tiếp tục phần 1, phần này mình sẽ tạo một con node server để connect đến core server và cũng chỉ để hiển thị hello world. Node Server.

0 0 117

- vừa được xem lúc

Microservice với Golang, NodeJS và gRPC (Phần 1)

Đặt vấn đề. .

0 0 55

- vừa được xem lúc

Biến ứng dụng Laravel của bạn trở nên phức tạp hơn với gRPC

gRPC là gì . RPC.

0 0 299