在前面 21 天的學習中,我們專注在 RESTful API 的設計與實作。然而,在一些高效能、跨語言或微服務架構的情境下, REST API 可能不是最佳選擇 。今天,我們來認識另一種強大的 API 通訊方式 —— gRPC 。
gRPC(Google Remote Procedure Call) 是 Google 開發的高效能、開源 RPC 框架。它基於 HTTP/2 與 Protocol Buffers(protobuf) ,用來在不同系統之間進行高效能的通訊。
簡單來說:
特點 | REST | gRPC |
---|---|---|
通訊協定 | HTTP/1.1 | HTTP/2 |
資料格式 | JSON/XML | Protobuf(二進位,更快更小) |
設計導向 | 資源導向(URI) | 動作導向(函式呼叫) |
效能 | 可讀性高,但資料大 | 高效能,序列化後體積小 |
語言支援 | 廣泛,基本無需工具 | 需安裝 Protobuf 工具,但支援多語言 |
常見應用 | Web API、第三方 API | 微服務、內部系統通訊、即時系統 |
假設我們要建立一個 User 服務。
先撰寫 .proto 檔案:
syntax = "proto3";
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
}
message UserRequest {
int32 id = 1;
}
message UserResponse {
int32 id = 1;
string name = 2;
}
接著:
不同服務(可能用不同語言)需要高效能的互相溝通。
需要雙向串流的應用(聊天、即時推播)。
公司內部系統之間,效能比可讀性更重要。
今天我們快速認識了 gRPC: