Định nghĩa và tổng quan kiến trúc gRPC

28

Tổng quan

Định nghĩa dịch vụ (Service)

Bắt đầu với đoạn mã dưới đây.

gRPC cho phép định nghĩa 4 loại phương thức của dịch vụ:

  • Unary RPCs khi client gửi một yêu cầu đến server và nhận về một phản hồi giống như một cuộc gọi phương thức bình thường.

  • Server streaming RPCs khi client gửi một yêu cầu đến server và nhận về một stream để đọc trình tự của thông điệp trả về.

  • Client streaming RPCs khi client ghi một chuỗi các thông điệp gửi đến server, stream được sử dụng. Client sẽ hoàn thành việc gửi thông điệp của nó, sau đó chờ server phản hồi. gRPC đảm bảo đặt hàng tin nhắn trong một cuộc gọi RPC riêng lẻ.

  • Bidirectional streaming RPCs khi cả 2 gửi một chuỗi các thông điệp sử dụng đọc-viết stream. Hai luồn hoặc động độc lập, để client và server có thể đọc và viết theo bất kỳ thứ tự nào họ muốn: ví dụ, server có thể đợi để nhận tất cả các thông điệp của client trước khi viết phản hồi hoặc có thể đọc thông điệp sau đó viết tin nhắn hoặc một số kết hợp đọc và viết khác. Thứ tự của thông điệp trong mỗi luồng được bảo tồn.

API surface

Bắt đầu từ định nghĩa dịch vụ trong tệp .proto, gRPC cung cấp các trình biên dịch protocol buffers tạo mã ở phía client và server. Các người dùng gRPC thường gọi các API này ở phía client và triển khai tương ứng ở phía server.

    • Về phía server, triển khai các phương thức được mô tả bởi dịch vụ và chạy một gRPC server để xử lý cuộc gọi từ client. gRPC infrastructure giả mã các yêu cầu, thực hiện các phương thức của dịnh vụ và mã hóa các phản hồi.
    • Về phía client, có một đối tượng local được gọi là stub thực hiện các phương thức tư tự dịch vụ. Sau đó, client có thể chỉ cần gọi các phương thức đó trên đối tượng local, gói các tham số cho loại tin nhắn protocol buffer thích hợp – gRPC xem xét sau khi gửi (các) yêu cầu tới server và server trả về (các) phản hồi protocol buffer.

Synchronous vs. asynchronous

Các cuộc gọi RPC đồng bộ chặn cho đến khi có phản hồi đến từ máy chủ. gRPC trong các ngôn ngữ lập trình có cả RPC động bộ và không đồng bộ.

TechTalk via Devnow.vn

CHIA SẺ