## gRPC來源
2015年,谷歌開源了他們的項目,該項目最終被稱為gRPC。但gRPC中的“g”實際上代表什么?很多人可能認為這是為了谷歌,因為谷歌制造了它,但它沒有。谷歌更改了每個版本的“g”的含義,以至于他們甚至制作了一個README來列出所有含義。
gRPC是一種用于實現RPC API的技術。由于gRPC是開源框架,通信雙方都基于該框架進行二次開發,從而使得通信雙方聚焦在業務,無需關注由gRPC軟件框架實現的底層通信。如下圖,DATA部分即為業務層面內容,DATA下面所有的信息都由gRPC進行封裝。
## 什么是gRPC ProtoBuf?
gRPC ProtoBuf是gRPC協議的接口描述語言,是一種與語言無關、平臺無關、擴展性好的用于通信協議、數據存儲的序列化結構數據格式。gRPC ProtoBuf編碼格式也稱為GPB(Google Protocol Buffers)編碼格式。GPB提供了一種靈活、高效、自動序列化結構數據的機制。GPB與XML、JSON編碼類似,也是一種編碼方式,但不同的是,它是一種二進制編碼,性能好,效率高。
REST(Representational State Transfer)表征狀態轉移,是一種軟件架構風格,用于指導WEB架構的設計和開發。REST同樣為管理和配置網絡設備提供了一種API接口設計的方法。gRPC與REST兩者的主要差異如下:
功能 | gRPC | [[W20250400136 |
---|---|---|
協定 | 必需 (.proto ) |
必須(.xml) |
協議 | HTTP/2 | HTTP |
Payload | Protobuf(小型,二進制) | XML(大型,人工可讀取) |
規定性 | 嚴格規范 | 嚴格規范 |
流式處理 | 客戶端、服務器,雙向 | 客戶端、服務器 |
瀏覽器支持 | 無(需要 grpc-web) | 是 |
安全性 | 傳輸 (TLS) | WS-security規范 |
客戶端代碼生成 | 是 | 三方工具均支持 |
gRPC官網
gRPC開源框架
gRPC 基礎概念詳解
gRPC高性能的原因